{ 비멤버 함수란 무엇인가? 멤버 함수가 아닌 함수를 말한다. 즉, 클래스 외부에 있는 함수를 말한다. 비멤버 함수가 뭐가 좋길래 활용해야 하는가? 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 으로 변수를 유지하게 된다면, 함수에게만 국한된 노출이 누구나 훔쳐 볼 수 있게 되는 것이다. 휴~ 비유를 들어야 직성이 풀리겠는가? 문 잠궈두고, 열쇠를 걸어 두어야 정녕 직성이 풀리겠는가? ㅋㅋ }
{ 무엇을 간접 변환이라고 하는가? 하나의 타입이 개발자가 눈치 못채게 다른 타입으로 변환 되는 것을 뜻하거나, 타입 변환이 정의하지 않아도 되는 것, 또는 변환 연산자 정의로 인하여, 변환되는 것을 뜻한다.(operator char*() 같은 것) 이것을 왜 피해야 하는가? 이것은 생성자의 호출이 예측하기 어렵게 만들고, 함수의 호출 역시 예측하기 어렵게 만들기 때문이다. 음~ 예를 들어 달라. #include class Widget { public: Widget( unsigned int ) { std::cout
{ 여기서 잠깐, 비공용이란 private 을, 공용이란, public 을 의미 하며, 가상이란 virtual 함수, 비가상이란 non virtual 를 뜻한다. 난 사실 이 제목데로 하는것에 마음에 와 닿지 않는다. 실제로 이렇게 구현 하려고 노력했지만, 경험상 다른 사람들이 봤을 때 익숙치 않아, 가독성이 떨어진다는 의견이 많기 때문이다. 물론 여기에 나 또한 포함 된다. : ) 이 가독성은 익숙치 않기 때문일지도 모른다. 이런 생각 때문에 나는 이것을 놓치기 싫어서, 다른 사람들의 자료를 찾기 시작했고, 정리를 하였다. 기본 예제 // 일반적인 방법의 다형성을 사용하기 위한 예제 #include // 기반 클래스 class Bird { public: virtual void Fly( char *__p..
최근댓글