목록C++ (43)
방프리
항목 4: 객체를 사용하기 전에 반드시 그 객체를 초기화 하자!! 객체(또는 변수)를 선언 시 초기화를 하지 않을 경우 알 수 없는 곳에서 터지기 마련이다. 이를 방지하려면 항상 객체를 선언 시 초기화 하는 것을 잊지 말아야 한다. 특히 class의 경우 생성자 부분에서 대입으로 하는 것이 아닌 초기화 리스트를 사용하여 반드시 초기화를 시켜주어야 한다. (초기화 리스트를 작성 시 멤버 변수 선언 순으로 초기화를 해준다면 당신은 굿 코더) 만약 멤버변수의 양이 너무 많아 초기화 리스트가 보기 싫다면 대입으로도 오류를 막을 수 있는 변수를 따로 모아 Default값으로 넣어주어도 괜찮다. But, 주의해야할 사항 한 가지 바로 비지역 정적 객체의 초기화 순서는 개별 번역 단위에서 정해진다는 사실이다. 책의 ..
항목 3: 낌새만 보이면 const를 들이대 보자! const란? 정말 좋은 키워드 왜냐하면 '의미적 제약'을 소스 코드에서 붙일 수 있고 이 원칙을 컴파일러는 항상 지켜준다. 만약 어떠한 변수의 데이터가 절대 변하지 않는 수라면 무조건!! const를 붙여주는 것이 맞다. 예전에 c++강의 수업을 들었을 때 정말 훌륭한 c++개발자는 const를 잘 활용하는 개발자라고 하는데 이는 틀린 말이 아니다. 여기서 중요한 점은 대개 개발자들 중 const의 위치를 두고 어떠한 것을 쓰는지는 천차만별이기 때문에 밑의 예를 눈에 익히는 것이 좋다. 1. void f1 ( const Widget *pw); //f1은 상수 Widget 객체에 대한 포인터를 매개변수로 취함 2. void f2 ( Widget cons..
항목 1 : C++를 언어들의 연합체로 바라보는 안목은 필수 *C++를 사용한 효과적인 프로그래밍 규칙은 경우에 따라 달라진다. 그 경우란, C++의 어떤 부분을 사용하느냐이다. 항목 2 : #define을 쓰려거든 const, enum, inline을 떠올리자 제목에서도 알 수 있듯이 #define 키워드보다 const, enum이나 혹은 inline을 좀 더 활용하자는 것이다. 이유인 즉 컴파일 시점에서 오류 찾기, 또는 메모리 할당 등 여러 이유 때문이다. 다음 예제를 보면서 알아보자 ex) #define EPSILONE 0.0001f 만약 이 define 구문이 컴파일러 입장에서는 어떤 식으로 보일까? 컴파일 시점에서 define 키워드가 자체적으로 EPSILONE 이라는 문자열을 밀어버리고 그 ..