본문 바로가기

c++ 언어/Effective C++

항목 4 : 객체를 사용하기 전에 반드시 그 객체를 초기화하자

객체 초기화....

초기화 , 대입의 차이점을 명확히 알면  어려운 내용이 아니다.

초기화
int a = 10 ,  string test = "hello world";
struct a = {10, 20, 30};

대입
int a;
a = 10;
string test;
test = "hello world";
struct a;
a = {10, 20, 30};

c언어에서는  초기화 나  대입이나  큰 차이가 없었는데  
c++ 에서는 차이가 좀 있다
클래스 때문인데
생성자 와  대입연산자 때문이다.

class  test
{
private:
    string _name;
public:
    test(string name);
}; 

test::test(string name) : _name(name) {  }
위의 문장이  초기화 방법이다.   :  <--  요거 쓰면 초기화 한다.
생성자 중괄호안에서 값을 변경하면  대입연산이 된다.

생성자 , 대입연산자  모두  비용이다.
다만 대입연산자를 쓰면  생성자가 호출된 후  대입연산자로  호출이 되므로
비용이 비효율 적이다.

그리고 c++ 에서는  클래스 설계시  생성자에서  초기화 하는 습관을 들이자.