책 정리/Effective C++ 2판 검색 결과
항목 28. 전역 네임스페이스를 분활한다. 이유 1. 잠재적 모호성을 경계하기 위해 2. 라이브러리 파일의 이식성 증가를 위해 해결 방법 1. using namespace의 사용시 반드시 필요한가 자문해 본다. 2. 간단한 것은 그냥 직접 네임스페이스를 기재해 사용 한다. 3. 네임스페이스를 정의해둔다. 주의 사항 1. 무분별한 namespace는 사용치 않는다. 개인적 생각 1. 어디까지나 이식성과 가독성을 위해서이다. 이 두가지가 21세기형 프로그래밍 기법이다! 라고 저자가 은근히 말하는거 같다; 2. 보기 좋은 떡 먹기도 좋다. 라는 .. 생각이 난다.
항목 27. 의도하지 않은 내부 생성 맴버 함수의 이용을 명시적으로 막는다. 여기서 내부 생성 멤버 함수란? 1. 생성자 2. 소멸자 3. operator= 이유 1. 메모리 릭발생 위험이 있다. (반대로 메모리 릭의 반대 경우가 생길수도 있다. 없는 메모리를 delete) 2. 기본자료형과 같은 연산을 할수 없게 된다. 2008/05/31 14:19 수정 2. 제목 그대로, 의도하지 않은 동자을 일으킬수 있다. 해결방법 1. 재정의 해 준다. 2. 이용자체를 막는다. 덧붙여 해결방법 2의 예 1. operator =와 기본 private로 선언한다. 2008/05/31 14:19 수정 1. 복사생성자와 operator= 를 재정의해주거나, private로 옮겨 정상작동하거나 동작자체를 막는다 2. 함수..
우선 잠재적 모호성이란? #include class A { public: A(const B&); }; class B { public: operator A() const; }; int main() { void f(const A&); B b; f(b); // B클래스의 operator A() 가 호출될까? // A클래스의 생성자 A() 가 호출될까? } 이런 경우를 잠재적 모호성이라 한다. 이유. 1. 컴파일 타임 중 예상치도 않은 오류가 날수 있다. 2. 라이브러리 파일의 이식성이 엄청나게 떨어진다. 해결방법 1. 네임스페이스를 사용한다.( 이 방법은 가독성을 떨어 뜨릴수 있다...) 2. 항상 디버깅이 가능한 코딩 습관을 길러야 한다; 3. 설계를 잘 하는 방법밖에 없다. 개인적인 생각 1. 이 이야기에..
우선 수치형 타입 이란? 기본자료형인 char long int float double 을 말한다. 포인터형 타입이란? char* long * .. 등등 이유 1. 오버로딩 시 그 모호성이 생길 가능성이 충분하다. (여기서 모호성은 ... VC2005 표기된 말을 그대로 인용한것으로 개인적 생각에 써 두겠다) 2. NULL 포인터와 수치형 타입의 0에 대해서 .. 매우 불확실하다. (사람의 눈으로.. 사실 0은 int형 으로 파악되고 FLASE 로 파악된다. 그것이 NULL 포인터라 할지라도) 해결 방법 1. 0이런 무엇인가? 란 답을 가지고 있어야 한다. 2. 수치오버로딩 시 오버로딩이 되는 매개변수의 변화에 대해서 생각해 두어야 한다. 3. 포인터형일 때는 다음과 같은 임시객체를 만들어 사용 해라. c..
우선 함수 오버로딩이란? 1. 똑같은 함수이름이 두개 있다. 2. 1번의 상황에서 두 함수의 매개변수가 다르다. 3. 각각 작동이 된다. 이때 이 함수를 함수 오버로딩되었다. 라고 말한다. 디폴트 인자 값이란? 1. 매개변수에 operator = 과 목적데이터를 넣는다. 예) int f(int a = 1); 이때 1은 디폴트 인자값이다. 항목 24. 함수 오버로딩과 디폴트 인자값 중에서 주의깊게 선택한다. 이유 1. C++ 특유의 함수 오버로딩과 디폴트매개변수 사이에 모호성이 발생될 수 잇다. - 이 모호성 때문에 컴파일 타임에 에러가 발생한다. (컴파일러 찾아주는 오류는 너무 반갑고 기분좋다.) 2. 가독성이 떨어 진다.... 해결방법 1. 자신에게 자문해 본다. - 디폴트로 이용할 값이 있는가? - ..
최근댓글