본문 바로가기

EFFECTIVE C++2

[EC++] #define 대신 const, enum, inline을 사용해야 하는 이유 이 글은 'Effective C++' 을 읽고 정리한 내용입니다. "선행 처리자보다 컴파일러를 더 가까이하자." #define - #define은 소스코드가 어떻게든 컴파일러에게 넘어가기 전에 선행 처리자가 밀어버리고 '숫자 상수로' 바꾸어버린다. 문제점 - #define으로 정의된 코드에서 에러가 발생하게되면, ASPECT_RATIO가 아닌, 1.653으로 에러메세지가 발생하게 된다. - 위와 같은 경우에는 코드에서 1.653이 의미하는 바가 무엇인지 모를 경우에 곤란한 상황이 생긴다. const 위와같은 문제를 해결하는 방법으로 const를 이용하는 방법이 있다. 장점 - AspectRatio는 언어 차원에서 지원하는 상수 타입의 데이터이기 때문에 컴파일러에서 처리된다. - 상수가 부동 소수점 실수 .. 2020. 2. 11.
[EC++] 용어 정리 ( 선언, 정의, 기본생성자, 복사생성자, 초기화, 복사대입연산자 등 ) 용어 정리 선언(declaration) - 코드에 사용되는 '어떤 대상'의 이름과 타입을 컴파일러에게 알려주는 것 - 구체적인 세부사항은 선언에 들어 있지 않다. 정의(definition) - 선언에서 빠진 구체적인 세부사항을 컴파일러에게 제공하는 것 - 객체의 경우에 있어서 정의는 컴파일러가 그 객체에 대한 메모리를 마련해 놓는 부분 - 함수나 함수 템플릿에 대한 정의는 그들에 대한 코드 본문을 제공하는 것 - 클래스 혹은 클래스 템플릿의 경우에는 그 클래스 혹은 템플릿의 멤버를 넣어준 결과 초기화 - 어떤 객체에 최초의 값을 부여하는 과정 - 사용자 정의 타입으로 생성한 객체의 경우, 초기화는 생성자에 의해 이루어진다. 기본생성자 - 어떤 인자도 주어지지 않은 채로 호출될 수 있는 생성자 - 원래부터.. 2020. 2. 10.