책 정리 검색 결과
이번 항목에선 암묵적으로 생성되는 함수들 때문에 생길 수 있는 문제점들을 짚어 보고, 문제점을 없애기 위해서 어떻게 해야 하는지에 대해서 배워 본다. 1 ) 클래스 정의 할 때, 암묵적으로 생성되는 함수들은 무엇이 있으며, 이 함수들을 암묵적으로 생성하는 것에 대한 의미와 암묵적인 함수들 때문에 생길 수 있는 문제점들을 구체적으로 설명하라. 암묵적으로 생성 되는 함수들은 무엇이 있는가? a. 기본 생성자 b. 복사 생성자 c. 복사 배정 연산자 d. 소멸자 언제 암묵적으로 생성 될까? 각 암묵적으로 생성되는 함수들을 정의하지 않은 상태에서, 각 함수들을 호출하는 코드를 작성하게 되면, 컴파일러가 각 함수들을 만들어 준다. 예외적으로, 생성자를 단 1개라도 정의하면, 생성자에 대해선 만들어 주지 않고, 복..
이번 항목은 C++ 에서 있어 뺄수 없는 가상성에 대한 논쟁이다. 가상성도 인터페이스의 캡슐화를 통하여, 내부 구현 상태를 숨기고 보호하는데, "가상성"을 제대로 쓰고 있는가? 에 대한 이야기를 시작으로, "어떻게" 가상성을 이용하고 있는가? 로 하여, "접근 지시자(access specifier)"를 적절하게 사용하는 방법에 대해서 집중적으로 말한다. 1 ) 기반 클래스 소멸자에 대한 "흔한 조언"은 무엇인가? a. 가상 함수는 비공개로 해야 한다. b. 소멸자는 가상 소멸자여야만 한다. 이 "흔한 조언"들을 따져보자. a. 가상 함수는 비공개로 해야 한다. 나는 이럴 때 이런 질문을 한다. "어떻게 때문에, 이렇게 해야 하는가?" 일반적으로 나는 가상 함수는 공개 인터페이스와 함께 사용 하고 있었다...
이번 항목에선 C++ 프로그래밍에서 사용되는 캡슐화(encapsulation)에 대한 이야기들이다. 철학적인 이야기도 나오기 때문에, 보는 중간에 졸음까지 잤었지만, 자다가 일어나서 다시 읽을 때의 신선함 때문이라도, 꽤 재미있는 항목이라 나는 생각한다. 스타일데로 캡슐화에 대한 질문들을 시작해 보자,. 1 ) "캡슐화"가 뜻하는 바는 무엇이며, 객체지향적 설계와 프로그래밍에서 그것이 얼마나 중요한가? 책에선 "캡슐화" 라는 뜻부터 풀어 보는데, 캡슐화란 "내부 구현을 숨기고 감싸서 보호하는 것" 이다. 즉, 외부와 연결된 인터페이스가 내부에 의존하지 않는다면, 클래스 내부의 변화는 외부와 연결된 인터페이스에 영향을 미치지 않음으로써, 보호 되는 것이다. 그렇다면, 객체지향적 설계와 프로그래밍에서 그것이..
얼마나 private이 비공개적인가? 라는 질문을 보고, 어떤 관점에서 비공개적인지 궁금해 했다. 컴파일 타임의 비공개적인가를 뜻하는건지, 런타임의 비공개적인가를 뜻하는지에 대해서 생각을 했었다. 책에선 이 두가지를 통틀어 그 원리에 대해서 설명 하고 있는데, 다음 질문을 통해서, 알아 보도록 하자. 1 ) Twice 함수들이 링크 과정에 포함되는 다른 어떤 번역 단위에 정의되어 있다고 할 때, 다음의 C++ 프로그램이 제대로 컴파일, 실행 될까? 아니라면 왜 그럴까? 된다면, 무엇이 출력 될까? 예제 코드 // Twice(x) 는 2 * x를 돌려준다. class Calc { public: double Twice( double d ); private: int Twice( int i ); std::com..
이번 항목에선 클래스의 접근 권한에 대한 이야기이며, 이런 권한이란 전제가 깔리기 때문에 "위조범, 사기꾼, 소매치기, 도둑"이 생기고, 이들을 찾고 검거하는 방법들도 소개 된다. 1 ) 클래스의 다음 부분들에는 어떤 코드가 접근할 수 있는가? ( a ) public ( b ) protected ( c ) private 나는 이 질문에 답하기 위해서, 먼저, "어디에서 접근 할 때의 접근 권한이지?" 라는 생각이 들었다. 상속된 클래스 내부에서의 접근 권한인가? 클래스의 객체의 사용 접근 권한인가? 로 나뉘는데, .. 불필요한 생각 없이, 그냥 해 보자. a. public 공개 멤버를 정할 때 쓰는 키워드로, 어떠한 경우에도 접근할 수 있다. b. protected 1단 보호가 걸친 멤버를 정할 때 쓰는..
최근댓글