C and C++

[C++] 객체를 초기화 할때는 생성자 초기화 리스트를Initialize List) 사용하기

개발새발 2018. 5. 13. 21:12
반응형

객체가 생성할될 때 가장 먼저 수행되는 것은 생성자이다. 생성되는 객체가 멤버변수를 갖고있다면(거의 대부분) 반드시 생성자에서 멤버변수들을 초기화 해주어야 한다.

그런데 이러한 값들을 초기화 할 때도 보다 더 효율적인 방법이 존재한다. 바로 생성자 초기화 리스트를 사용하는 것이다.



class PhoneBook{

private:

    std::string name;

    std::string phoneNum;

    int age;


PhoneBook class가 있을 때 생성자안에서 다음과 같이 대입연산을 통해서 초기화를 진행하기 보다는 


PhoneBook(const std::string& name, const std::string& phoneNum, const int age){

        this->name = name;

        this->phoneNum = phoneNum;

        this->age = age;

//기본생성자 + 대입연산자 실행

}


다음과 같이 초기화 리스트를 사용하여 객체를 초기화해주는게 좋다.


PhoneBook(const std::string& name, const std::string& phoneNum, const int age)

    : name(name),

    phoneNum(phoneNum),

    age(age)

    {}



그 이유는 PhoneBook Class가 생성될 때 첫번째 방법의 경우 객체가 생성되면서 멤버변수들이 기본 생성자에 의해 미리 초기화를 한 뒤 다시 대입을 하게 된다.

즉, default 값으로 멤버변수들을 한번 초기화 하고 다시 대입한다.


따라서 초기화 리스트를 사용하는 것이 객체생성과 함께 초기화가 이루어지기 때문에 더 효율적인 방법이다.




반응형