경험 많은 개발자라도 상속을 남용 하는 경우가 많이 있다. 상속은 머리에 껌이 달라 붙는것 처럼 띄어내기가 참 어려운 구조이기 때문에, 필요할때만 사용 해야 한다. 자.. 예제코드를 봐보자. 코드 /*예제 1 */ template class MyList { public: bool Insert( const T&, size_t index ); T Access( size_t index ) const; size_t Size() const; private: T* buf_; size_t bufsize_; }; /*예제 1(a) */ template class MySet1 : private MyList { public: bool Add( const T& );// Insert() 호출 T Get( size_t inde..
2008/10 검색 결과
#define _WIN32_WINNT 0x400 #include #include #include VOID CALLBACK APCProc(ULONG_PTR dwParam) { printf("APCProc callback\n"); } unsigned int _stdcall ThreadProc(LPVOID pParam) { printf("wait 2 seconds in child thread\n"); Sleep(2*1000); HANDLE hThread = (HANDLE)pParam; DWORD dwRet = QueueUserAPC(APCProc, hThread, (ULONG_PTR)NULL); CloseHandle(hThread); return 1; } int main(int argc, char* argv[..
디자인 패턴은 재사용 가능한 코드를 작성하기 위한 도구이다. 이번 항목에서 디자인 패턴을 알아 볼 수 있겠는가? 코드 class string; class Record; class PrimaryKey; class GenericTableAlgorithm { public: GenericTableAlgorithm( const string& table ); virtual ~GenericTableAlgorithm(); /*성공했을 경우 true를 리턴하며, 1. 물리적으로 테이블 레코드를 읽는다. 2. 수행해야 하는 열인지 판단하기 위해 Filter를 실행한다. 3. 수행하는 열의 목록이 완료되었을때 각 열에 대해 ProcessRow를 호출한다. */ bool Process(); private: /*열을 처리해야 ..
우선 객체로 만들 경우의 장점은 1. 쓰레드의 생성과 소멸을 관리 할 수 있다. 2. 1의 장점으로, 쓰레드를 지역 객체로 다룰 수 있다. 3. 쓰레드 객체와 쓰레드에서 사용될 함수만을 따로 관리 하여 코드 정리 및 가독성을 극대화 할 수 있다. 4. 1.2.3의 장점으로 디버깅이 조금이나마 향상 된다. 실제 쓰레드가 종료 되어도, 쓰레드가 사용했던 값들을 보존 및 확인 할 수 있다는 것은 .. 아주 큰 매력이다. 제일 마음에 드는건 4번이다. .... 네트워크에서 디버깅이 어려운데, 쓰레드 때문에 더 어려운 디버깅을 조금이나마 향상 시킬 수 있기 때문이다. .. 현재 객체화된 쓰레드는 성공 하였지만, 객체화된 쓰레드의 인터페이스를 어떻게 구성해야 할지 모르겠다. 우선 사용자의 기준으로 인터페이스를 만드..
이번 항목은 RTTI 란 무엇인지에 대해서 살펴 본다. RTTI는 무엇인가? C++ 프로그래밍에선 Run-Time Type Information, or Run-Time Type Identification 약자로 "런타임 형식 정보" 기능을 뜻한다. RTTI 기능을 사용하기 위해선 컴파일러가 이 기능을 지원해야 하며, 비쥬얼 스트디오에선 프로젝트 속성이 "런타임 형식 정보 사용" 을 체크 해야만 한다. 이것은 클래스 및 함수, 기본자료 등 객체라 불리우는 모든 것에 컴파일러가 "아이디"를 부여하여, 기능이 구현되어졌다. 이 "아이디"는 type_info 객체로 구현 되어 졌으며, typeid 연산자를 통해서만, 생성 가능하다. 어떻게 typeid 를 사용 할수 있는가? 예제 코드 /* http://ikpi..
최근댓글