{ 왜냐하면 C++의 이름검색 알고리즘 때문이다. 검색하는 네임스페이스 안에, 같은 이름의 함수가 발견 된다면, 그 곳에서 검색이 멈추고, 더 이상 찾으려고 하지 않는다. Effective C++ 이나 Exeptional C++ 보면 자세히 나오는데, 그것을 참고 하는게 좋을 듯 싶다. 이름 검색 알고리즘 관련링크 http://www.ikpil.com/670 }
책 정리/C++ Coding Standards : C++ 코딩의 정석 검색 결과
{ 왜 같이 제공해 주어야 하는가? 컴파일러가 하는 일 중에 코드를 생성해 주는 일도 있다. 컴파일러의 코드의 생성은 여러 가지 일들이 있다. 그 중에서 new 가 실패 했을 경우, 자동으로 delete문을 만들어 주는 부분이 있는데, 만약 new와 같은 쌍의 delete가 없다면, delete를 호출하는 코드를 추가해 주지 않는다. 그렇기 때문에, 항상 같이 제공해 주어야 한다. 예외적으로 메모리를 생성하지 못하는 new의 경우 delete를 만들지 않아도 상관이 없다. 왜냐하면 메모리가 세어 나가는게 아니기 때문이다. 관련링크 http://www.debuglab.com/knowledge/newoperation.html }
{ 비멤버 함수란 무엇인가? 멤버 함수가 아닌 함수를 말한다. 즉, 클래스 외부에 있는 함수를 말한다. 비멤버 함수가 뭐가 좋길래 활용해야 하는가? 1. 비멤버 함수는 클래스의 무게를 줄여 준다. ① 이는, 좀더 유지보수가 편해 지게 해 주는 초석이 된다. ② 가독성이 올라 간다. 왜냐구? 봐야 할게 적으니까~ 2. General Programming을 할 수 있다. ① 이는, 한번 만들어 둔것을 손쉽게 재사용 할 수 있게 해주는 초석이 된다. ② 코드의 재사용으로 역시 알아야 할 것이 줄어 들게 된다. 사례를 들어 달라. Excetional C++ Sytle 에서 string 클래스의 예를 보면 될 듯 싶다. http://www.ikpil.com/841 보통 어떻게 비멤버 함수를 만들지 결정 하는가? ..
{ Pimpl ( 핌플 )은 무엇인가? 컴파일 방화벽이다. 컴파일 방화벽은 무엇이고 무엇을 위한 것인가? 방화벽은 벽이고, 이 벽은 컴파일러의 시야를 가려주기 위한 것이다. 컴파일러의 시야는 무엇인가? 정의부를 보는 시야이다. 정의부를 보는 시야는 무엇을 보는가? 각 함수의 구현내용, 변수의 사이즈, 클래스의 총 사이즈 등을 본다. 음, 잘 이해가 안간다. 그래서 어쩔 수 있는 건가? 1. 헤더 파일간의 의존성을 엄청나게 줄여 줄 수 있다. 2. 라이브러리의 인터페이스에 영향을 미치지 않고, 변수의 추가 삭제가 용이하다. 3. 좀 더 강력하게 더블 private을 이용 할 수 있다. (private 속의 private) 어떻게 사용 하는가? .. 링크 참조 그 동안 정리한 것도 있고, 인터넷에도 많고~ ..
{ 내부의 것은 무엇을 말하는가? 바로 핸들을 말한다. 핸들이란 무엇인가? 차라는 녀석을 마음데로 움직이는 조종대 이다. 이 조종대를 왜 노출 시키지 말아야 하는가? 나라에선 차가 너무 유용하고, 위험하기에, 운전면허증을 따야지만 몰 수 있게 만들었다. 마찬가지다. 핸들 역시 아무에게나 잡을 수 있게 허락해 준다면, 위험해서 도로에 나오겠는가? .. 너무 비유만 하지 말고 C++ 로 설명해 해줘~ 소켓을 예로 들겠다. #include class CSocket { public: SOCKET get_socket() { return s_; } private: SOCKET s_; }; int main( void ) { CSocket s; SOCKET sock = s.get_socket(); closesocket..
{ 왜냐하면, 데이터 멤버는 변수이기 때문이다. 변수는 무엇인가? 변수는 특정 상태를 기록하기 위한 공간이다. 이게 무슨 상관인가? 특정한 상태를 기록 하는 공간이, 아무에게나 열려 있으면 어찌하겠는가? C++ 로써 예를 들자면, 이런 변수에 값을 변경하기 위해선 로직을 사용 한다. 이 로직들은 함수 형태를 띠는게 자연스럽다. 이런 함수들이 많아 질 수록, 변수는 많은 변화에 노출이 된다. 이때 노출의 정도를 그나마 줄일 수 있는 방법이 private 이다. 만약 public 으로 변수를 유지하게 된다면, 함수에게만 국한된 노출이 누구나 훔쳐 볼 수 있게 되는 것이다. 휴~ 비유를 들어야 직성이 풀리겠는가? 문 잠궈두고, 열쇠를 걸어 두어야 정녕 직성이 풀리겠는가? ㅋㅋ }
최근댓글