{ 왜냐하면, 파생 객체의 생성자 호출 순서는 항상 기반 객체이기 때문이다. 잘 이해가 안간다....? 그러니까 기반 객체의 생성자가 호출 될 때 가상 함수가 호출 되어 지면, 파생 객체는 아직 만들어 지지 않았기 때문에, 파생 객체의 함수가 호출 되지 않고, 기반의 함수가 호출 된다. 이는 개발자에게 가독성은 물론이거나와 몹시 어렵다는 느낌을 줄 수 밖에 없다. 디스트럭트 역시 마찬가지다. 예제는? #include #include // example class Base { public: ~Base() {} Base( char *__p ) { Draw(__p); } public: virtual void Draw(char *) { std::cout
C++ 코딩의 정석 검색 결과
{ 왜냐하면 불필요한 작업을 줄일 수 있기 때문이다. 무엇이 불필요한 작업인가? 변수는 생성과 동시에 초기화값을 대입하면, 한번의 생성으로 값을 셋팅 할 수 있다. 그러니 값을 생성 하고 난 뒤에 값을 대입한다면, 불필요한 작업이 되는 것이다. 그래서 모두 초기화 목록에서 초기화 했는데, 보기가 어렵더라? 맞는 말이다. 변수가 많은 경우에는 특정 함수로 빼서 사용 하는게 더 간편하고 안전하다. 너무 이른 최적화가 아닌가? 이건 최적화 축에도 못낀다. 적당한 선에서 타협하여, 함수로 뺄찌 초기화 리스트에 넣을지 결정하는게 좋을 것 같다. }
{ 왜냐하면 멤버 변수의 정의순으로 초기화 하기 때문이다. #include #include class name { public: ~name() {} name(char *__pfirst_name, char *__plast_name ) : last_name_(__plast_name) , first_name_(__pfirst_name) , full_name_( first_name_ + " " + last_name_ ) {} const std::string& get_full_name() { return full_name_; } private: std::string full_name_; std::string first_name_; std::string last_name_; }; int main( void ) { ..
{ 왜냐하면 C++의 이름검색 알고리즘 때문이다. 검색하는 네임스페이스 안에, 같은 이름의 함수가 발견 된다면, 그 곳에서 검색이 멈추고, 더 이상 찾으려고 하지 않는다. Effective C++ 이나 Exeptional C++ 보면 자세히 나오는데, 그것을 참고 하는게 좋을 듯 싶다. 이름 검색 알고리즘 관련링크 http://www.ikpil.com/670 }
{ 비멤버 함수란 무엇인가? 멤버 함수가 아닌 함수를 말한다. 즉, 클래스 외부에 있는 함수를 말한다. 비멤버 함수가 뭐가 좋길래 활용해야 하는가? 1. 비멤버 함수는 클래스의 무게를 줄여 준다. ① 이는, 좀더 유지보수가 편해 지게 해 주는 초석이 된다. ② 가독성이 올라 간다. 왜냐구? 봐야 할게 적으니까~ 2. General Programming을 할 수 있다. ① 이는, 한번 만들어 둔것을 손쉽게 재사용 할 수 있게 해주는 초석이 된다. ② 코드의 재사용으로 역시 알아야 할 것이 줄어 들게 된다. 사례를 들어 달라. Excetional C++ Sytle 에서 string 클래스의 예를 보면 될 듯 싶다. http://www.ikpil.com/841 보통 어떻게 비멤버 함수를 만들지 결정 하는가? ..
{ Pimpl ( 핌플 )은 무엇인가? 컴파일 방화벽이다. 컴파일 방화벽은 무엇이고 무엇을 위한 것인가? 방화벽은 벽이고, 이 벽은 컴파일러의 시야를 가려주기 위한 것이다. 컴파일러의 시야는 무엇인가? 정의부를 보는 시야이다. 정의부를 보는 시야는 무엇을 보는가? 각 함수의 구현내용, 변수의 사이즈, 클래스의 총 사이즈 등을 본다. 음, 잘 이해가 안간다. 그래서 어쩔 수 있는 건가? 1. 헤더 파일간의 의존성을 엄청나게 줄여 줄 수 있다. 2. 라이브러리의 인터페이스에 영향을 미치지 않고, 변수의 추가 삭제가 용이하다. 3. 좀 더 강력하게 더블 private을 이용 할 수 있다. (private 속의 private) 어떻게 사용 하는가? .. 링크 참조 그 동안 정리한 것도 있고, 인터넷에도 많고~ ..
최근댓글