본문 바로가기

C++

virtual함수와 라이브러리와의 관계 만약 C++ 을 사용하지 않는다면, host 프로그램1에서 함수 포인터를 이용하여 기능들을 호출할텐데, C++ 을 사용할 경우에는 class의 member function 을 virtual 로 해 놓은 후, virtual로된 클래스를 상속받아서 virtual로된 클래스에 관련된 라이브러리의 내용을 overriding 시킨다. 그 후, host 프로그램에서는 부모 class의 pointer로 자식 클래스를 가리킨 후, virtual 로 된 함수를 호출하면 되겠다. 그림으로 보면 다음과 같다. 동적 library 를 사용하는 프로그램의 모식도. host 프로그램은 compile 시 순수추상함수 (pure virtual function)를 호출한다. 동적으로 올라갈 library는 순수추상함수를 갖고 있는 클.. 더보기
참조의 정보(참조 값)에 대한 이해 컴퓨터 구조에서 배웠던 내용이 아닐까하고 생각해본다... 더보기
std::thread 클래스 http://callstack.tistory.com/19http://www.cplusplus.com/reference/mutex/unique_lock/http://forums.codeguru.com/showthread.php?305166-Windows-SDK-Thread-How-to-end-a-thread 더보기
지역변수의 레퍼런스를 반환하는 함수 지역변수의 레퍼런스를 반환하는 함수 [출처] 지역변수의 레퍼런스를 반환하는 함수|작성자 해킹 더보기
c++ 공부 정리 *레퍼런스 변수 int b; int &a = b; //레퍼런스 변수는 특이하게 변수이름을 할당하여 사용함 int &a = int(3); Point클래스가 있다고 가정 Point a = Point(); //임시객체를 생성하여 레퍼런스 변수 a에 저장 1. 클래스 정의 멤버 변수 + 멤버 함수 2. 객체 생성 Point pt; pt.Print(); 3. 멤버 함수 안에서의 이름 충돌 Class Point { int x; void Point::Print() { int x = 3; cout Draw(); for(i = 0; i < 5; ++i) { delete shapes[i]; shapes[i] = NULL; } return 0; } 문제점 모두 Shape::Draw()함수를 호출하게 됨 +가상함수 #incl.. 더보기
c++ 헤더 파일과 구현파일 (여러 개의 소스 파일을 사용하는 법) 다른 구현 파일에 있는 함수르 사용할 수 있기 하기 위해 할 일 1. 공유될 함수가 있는 구현 파일의 이름을 따서 헤더파일을 만듦 2. 이 헤더 파일에 공유될 함수의 원형을 적음 3. 공유될 함수를 호출할 구현 파일에서는 이 헤더 파일을 포함 4. 구현 파일에 자기 자신에 대한 헤더 파일을 포함 구조체를 공유하기 위해 해야 할 일 1. 구조체의 이름을 따서 새로운 헤더 파일을 만듦 2. 이 헤더 파일에 구조체의 정의 부분을 위치시킨다 3. 구조체를 사용하는 구현 파일마다 이 헤더 파일을 포함시킨다 예제 21-25 더보기
c, c++ 면접 1.C 언어에서 볼레타일, 논볼레타일에 대하여 설명하시오 Volatile : 키워드 중 하나입니다. volatile로 선언된 변수는 외부적인 요인으로 그 값이 언제든지 바뀔 수 있음을 뜻합니다. Nonvolatile : 위의 Volatile의 반대입니다. 2.스택이란? 함수로 전달되는 인수, 지역변수 등의 임시 변수들이 저장되고 함수 실행 후 돌아갈 복귀 번지도 저장되는 기억장소 3.세마포어란? 뮤텍스와의 차이는? 한정된 자원을 여러개의 프로세스들이 사용해야 할 경우, 프로세스들 간에 자원 사용시 충돌이 없도록 하기 위해서 세마포어를 사용합니다. Critical Section을 가진 Thread들의 running time이 서로 겹치지 않게, 각각 단독으로 실행되게 하는 기술입니다 세마포어는 스레드간 재.. 더보기
ios 주의사항 ios_base::in | ios_base::_Nocreate | ios_base::binary | ios::_Noreplace 더보기