본문 바로가기

전체보기115

Doxygen Quick Guide - Doxygen 주석 > *Doxygen 기본 스타일 /** */ *주석안에 아이템들 @breif ==> 설명을 쓴다. 여러줄을 쓸때에는 @breif를 쓰고 한줄 띄운다움 계속해서 쓰면된다. @file ==> 파일 이름을 구별할때. @return ==> 함수의 리턴값 나타낼때. @author ==> 작성자 이름을 나타낼때 @date ==> 작성날짜를 나타낼때. @param ==> 함수 파라메터를 나타낼때 @see ==> 참고할 함수나 페이지를 지정한다. @todo ==> 다음에 작업해야 될 내용 @bug ==> 버그에 대한 기술 @code ==>중요 코드를 설명할때 시작 지점 가리킨다. @endcode ==> 중요코드 설명할때 종료 지점 가리킨다. @exeception ==> @mainpage ==> Doxygen 메인 페이.. 2008. 8. 5.
항목 8. 예외가 소멸자를 떠나지 못하도록 붙들여 놓자. class DBConnection { public: static DBConnection create(); void close();}; 위의 DBConnection 객체에 대해 사용자가 cloase를 직접 호출해야 하는 설계이다. 사용자의 망각을 사전에 차단하는 좋은 방법이라면 DBConnection에 대한 자원관리 클래스를 만들어서 그 클래스의 소멸자에서 close를 호출하게 만드는 것이다. class DBConn { // DBConnection 객체를 관리하는 클래스 public: ... ~DBConn() // 데이터베이스 연결이 항상 닫히도록 확실히 챙겨주는 함수 { db.cloase(); } private: DBConnection db; }; 위의 두 클래스를 활용하여 다음과 같은 프로그래밍이 가능.. 2008. 7. 10.
단일체 (Singleton) 코드 #include template class Singleton { static T* ms_Singleton; public: Singleton( void ) { assert( !ms_Singleton ); int offset = (int)(T*)1 - (int)(Singleton *)(T*)1; ms_Singleton = (T*)((int)this + offset); } ~Singleton( void ) { assert( ms_Singleton); ms_Singleton = 0; } static T& GetSingleton( void ) { assert( ms_Singleton ); return ( *ms_Singleton ); } static T* GetSingletonPtr( void ) { return.. 2008. 7. 5.
항목 7. 다형성을가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자. C++의 규정에 의하면, 기본 클래스 포인터를 통해 파생 클래스 객체가 삭제될 때 그 기본 클래스에 비가상 소멸자가 들어 있으면 플그램 동작은 미정의 사항이라 되어 있다. 대게 그 객체의 파생 클래스 부분이 소멸되지 않게 된다. 가상 소멸자를 선언하는 것은 그 클래스에 가상 함수가 하나라도 들어 있는 경우에만 한정하자. (이부분은 뭐라 정리하기 힘들다 이해는 했는데 내용 정리가 힘들다 추후 다시 정리 예정) 이것만은 잊지 말자! - 다형성을 가진 기본 클래스에는 반드시 가상 소멸자를 선언해야 한다. 즉, 어떤 크랠스가 가상 함수를 하나라도 갖고 있으면, 이 클래스의 소멸자도 가상 소멸자이어야 한다. - 기본 클래스로 설계되지 않았거나 다형성을 갖도록 설계되지 않는 클래스에는 가상 소멸자를 선언하지 말아야.. 2008. 7. 1.
2008.06.27 작업 내역 - 클라이언트 리비전 1 to 2 //--------------------------------------------------------------------- // 클라이언트 리비전 #2 // 오후 12:35:00 2008.06.27 (금) //--------------------------------------------------------------------- // 작업 내역 1. 기존의 D3D_Api.Cpp 의 함수들을 CDxApi 클래스로 묶었다. 2. CGameMng 클래스를 추가 하였다. 3. CMediator 부모 클래스를 생성 하였다. // 파일 변화 내역 Delete D3D_Api.cpp Delete D3D_Api.h Add DxApi.cpp Add DxApi.h Add GameMng.cpp Add GameMng... 2008. 6. 27.
항목 6. 컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자. 하나밖에 없는 클래스 즉, 똑같은게 없는 클래스를 만든다고 할 때 객체는 사본(copy)를 만드는 것 자체가 이치에 맞지 않다. 그러다 보니 객체를 복사하려 하는 코드는 컴파일이 되지 않게 하려면 어떻게 해야 할까? HomeForSale h1; HomeForSale h2; HomeForSale h3(h1); // h1을 복사하려 한다. - 컴파일이 되면 안된다. h1 = h2; // h2를 복사 하려 한다. - 컴파일이 되면 안된다. 해결 방법 - 컴파일러가 생성하는 복사 생성자와 복사 대입 연산자는 public 으로 자동 생성 해버리므로 이들을 private 멤버로 선언 하면 된다. ㄴ 효과1 : 클래스 멤버 함수가 명시적으로 선언되어 컴파일러는 자시느이 기본 버전을 만들 수 없다. ㄴ 효과2 : 비공.. 2008. 6. 27.