객체가 생성할될 때 가장 먼저 수행되는 것은 생성자이다. 생성되는 객체가 멤버변수를 갖고있다면(거의 대부분) 반드시 생성자에서 멤버변수들을 초기화 해주어야 한다.
그런데 이러한 값들을 초기화 할 때도 보다 더 효율적인 방법이 존재한다. 바로 생성자 초기화 리스트를 사용하는 것이다.
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 값으로 멤버변수들을 한번 초기화 하고 다시 대입한다.
따라서 초기화 리스트를 사용하는 것이 객체생성과 함께 초기화가 이루어지기 때문에 더 효율적인 방법이다.
'C and C++' 카테고리의 다른 글
[C++] 자원관리 Smart Pointer (shared_ptr) (0) | 2018.06.17 |
---|---|
[C++] 상속을 허용하는 Base 클래스의 소멸자는 반드시 가상(virtual) 소멸자로 선언 (0) | 2018.06.03 |
[C++] 기본으로 만들어지는 생성자,복사 생성자, 소멸자, 대입 연산자와 이를 금지하는 방법 (0) | 2018.05.26 |
[C++] #define은 지양하자 (0) | 2018.05.06 |
[C++] delete시 주의점 (0) | 2018.01.01 |