본문 바로가기

변수 초기화

(2)
항목 36 : 초기화 (변수 초기화, 생성자의 문제점) (난이도 : 3) 이번 항목에선 객체를 초기화하는 방법들과 그 차이점에 대한 논의이다. 객체를 초기화 하는 방법으로는 크게 생성자 호출로 인한 초기화 방법과 복사 생성자 호출로 인한 초기화 두가지가 있다. 이 차이를 확실히 알아야지만, 최소한의 최적화(?)와 버그들을 잡을 수 있을 것이라고 나는 생각한다. More Exceptional C++ 의 7단원, 37 항목에서 이 내용에 대해서 자세히 언급하고 있는데, 생각해 볼만한 질문을 두개 던저준다. 질문 1. 생성자 호출로 인한 초기화와 복사 생성자 호출로 인한 초기화의 차이점은 무엇인가? 질문 2. 다음 예제중 생성자 호출로 인한 초기화와 복사 생성자 호출로 인한 초기화를 구분 지어 설명 하라. class T : public S { public: T() : S( 1 )/..
항목 42 : 변수 초기화 (난이도 : 3) 다음에 나오는 코드들은 무엇이 다를까요?(T는 어떤 클래스 형식을 의미합니다)? T t; T t(); T t(u); T t = u; 5분안에 답하지 못한다면, 모르는 것이므로... 정리를 시작할까 한다. 해당 코드는 T 클래스의 1. 기본 생성자로 인한 초기화(기본 초기화) 2. 인자가 있는 생성자로 인한 초기화(직접 초기화) 3. 복사 생성자로 인한 초기화(복사 초기화) 의 차이를 말하고 있다. 1. T t; 해당 코드는, 기본 생성자로 인한 초기화를 뜻하며, 그 어떠한 생성자가 없거나, T::T() 가 있다면, T::T() 로 초기화를 하는 코드이다. 2. T t(); 나도 이 코드는 T::T() 의 호출이다. 라고 단정 지었다.(이렇게 사용한적이 없어서..) 하지만 이 코드는 .. T 타입을 반환하..