목록기본개념/Effective C++ (2)
VioletaBabel
6. 컴파일러가 만든 함수가 필요 없을 시, 사용을 금지하라. 단 하나만 만들고 복사해선 안 될 클래스가 있는 경우엔 어떻게 하여야 하는가. 5번에서 봤듯이 복사 생성자와 복사 대입 연산자는 저절로 만들어지는데, 이를 private 멤버로 선언 후 정의를 하지 않는 방식(그냥 private 멤버로만 선언하면 friend로 접근이 가능하다.)을 이용한다. [이는 실제 iostream 헤더에서도 사용하는 하나의 기법이라고 한다.]123456class A {private: A(const A &a);// 어차피 쓸 일이 없으니 인수 이름도 빼기도 한다. A &operator=(const A &a); };Colored by Color Scriptercs그런데 이건 복사를 하려고 할 경우 링크 시점에 문제를 발생시..
2. #define을 쓰려거든 const, enum, inline을 떠올리자 - const1#define A_RATIO 1.653cs을 썼는데 에러가 난다면 에러메시지에는 A_RATIO가 아닌 1.653으로 나온다.매크로를 쓸 일이 생긴다면 매크로 대신 상수를 이용해1const double Aratio = 1.653;cs같은 식으로 쓰는게 좋다.매크로를 쓰면 A_RATIO가 등장할 때마다 1.653의 사본이 생겨 들어가지만, const로 선언 시에는 사본은 딱 하나만 생기기에 컴파일 후 최종 코드의 크기가 줄어든다. 상수 포인터를 정의하는 경우에는 1const char* const Name = "Yuna Kim";cs처럼 포인터와 포인터가 가리키는 대상까지 const로 선언해줘야 한다. 문자열 상수를 쓸..