분류 전체보기
-
4. 객체를 사용하기 전에 반드시 그 객제를 초기화하자프로그래밍/Effective c++ 2016. 3. 10. 13:48
c++에는 초기화 규칙이 명확하다. 하지만 그 규칙 자체가 복잡하기 때문에 닥치고 초기화하자. 비멤벼 객체에 대해서는 초기화를 손수 하고, 멤버 객체는 생성자에서 그 객체의 모든것을 초기화 하자. 하지만 대입을 초기화와 헷갈려서는 안된다. ABEntry::ABEntry(const std: :string& name , const std : :string& address, const std : :list& phones){theName = name ;theAddress = address;thePhones = phones ;numTimesConsulted = 0 ;} theName, theAddress 및 thePhones 의 경우 대입을 하는 것이지, 초기화를 하는 것이 아니다. ABEntry 생성자에 진입하..
-
3. 낌새만 보이면 const를 들이대자.프로그래밍/Effective c++ 2016. 3. 10. 13:47
const는 어떤 값이 불변이어야한다는 제작자의 의도를 컴파일러 및 다른 프로그래머와 나눌 수 있는 수단이다. void f1( const Widget *pw) ;void f2(Widget const *pw) ;는 의미적으로 동일하다. 함수에 대한 const : “해당 멤버 함수가 상수 객체에 대해 호출될 함수 이다”중요성1. 클래스의 인터페이스를 이해하기 좋게 하기 위해서.- 클래스로 만들어진 객체를 변경할 수 있는 함수는 무엇이고, 또 변경할 수 없는 함수는 무엇인가를 사용자 쪽에서 알수 있게 해준다.2. 이 키워드를 통해 상수 객체를 사용할 수 있게 해준다.- c++ 프로그램의 실행 성능을 높이는 핵심 기법 중 하나인 객체 전달을 ‘상수 객체에 대한 참조자(reference-to-const) ’로 진..
-
2. #define을 쓰려거든 const, enum, inline을 떠올리자.프로그래밍/Effective c++ 2016. 3. 10. 13:10
#define은 다음과 같이 선언 했을 때, 기호식 PI를 컴파일 시에 정의한 상수 3.14로 대체한다.#define PI 3.14 가독성 면에서는 괜찮은 방법이지만 디버깅 시에는 기호 PI가 아니라 숫자 3.14로만 나타나기 때문에 어디서온 값인지 알수가 없게 된다. 이 문제의 해결법은 상수를 쓰는 것이다.const double PI = 3.14; 이 경우 3.14의 사본이 여러개 생기지 않아 코드의 크기가 줄어드는 이점도 있다. 이때 주의 할 점은 첫째. 상수 포인터를 정의 하는 경우 타입 뿐 아니라 포인터가 가리키는 대상까지 const로 선언하는 것이 보통이다.char* 기반의 문자열 상수를 정의한다면 다음과 같이 const를 두번 써야한다.const char* const authorName = "..