Effective C++
-
Effective C++...2일지 2022. 5. 30. 08:51
포인터의 상수 처리 포인터는 const를 어디에 붙이는지에 따라 포인터를 상수 처리할지, 데이터를 상수 처리할지 달라진다. char greeting[] = "Hello"; char* p = greeting; // 비상수 포인터, 비상수 데이터 const char* p = greeting; // 비상수 포인터, 상수 데이터 char* const p = greeting; // 상수 포인터, 비상수 데이터 const char* const p = greeting; // 상수 포인터, 상수 데이터 ※ 값의 수정이 필요한 경우가 아니면 const를 붙여두면 추후 실수를 막을 수 있다. 상수 함수의 오버로딩 클래스의 함수는 상수 여부만으로 오버 로딩이 가능하다. class TextBlock { public: ... ..
-
Effective C++...1일지 2022. 5. 27. 08:09
클래스 범위에 상수 정의 클래스 범위에만 상수를 적용할 때는 정적(static) 멤버로 만드는 게 좋다. 이때, 헤더(.h 파일)에는 선언만 존재해야 하고 정의는 구현(.cpp 파일)에 들어가야 한다. ※ 클래스 컴파일 시 상수 값이 필요한 경우는 예외로 둔다. // CostEstimate.h class CostEstimate { static const double FudgeFactor; } // CostEstimate.cpp const double CostEstimate::FudgeFactor = 1.35; 나열자 둔갑술(enum hack) 클래스 컴파일 시 상수 값이 필요한 경우 상수 대신 enum을 선언하여 사용할 수 있다. ※ enum은 쓸데없는 쓸데없는 메모리 할당이 발생하지 않는다. class..