멤버 이니셜라이저(Member Initializer) 를 이용한 멤버 초기화



11라인에서 이니셜라이저가 쓰였는데 이것은 이렇게 된다. int num1 = n1;


또 다른 멤버 이니셜라이저를 이용한 멤버 초기화


class Rectangle

{

private:

Point upLeft;

Point lowRight;


public:

Rectangle(const int &x1, const int &y1, const int &x2, const int &y2)

:upLeft(x1, y1), lowRight(x2, y2) //이니셜라이저

{

                //empty

}

};

/* 여기서 Rectangle 클래스는 두 점의 정보를 직접 전달받을 수 있게 정의되어있다. 그리고 "이니셜라이저"를 통해 이 정보를 멤버인 Point 객체를 초기화하고있다. */


멤버 이니셜라이저가 의미하는 바

1. 객체 upLeft의 생성과정에서 x1과 y1을 인자로 전달받는 생성자를 호출하라.

2. 객체 lowRight의 생성과정에서 x2와 y2를 인자로 전달받는 생성자를 호출하라.


이렇듯 멤버 이니셜라이저는 멤버변수로 선언된 객체의 생성자 호출에 활용된다.


따라서, 프로그래머는 생성자의 몸체에서 초기화 하는 방법과 이니셜라이저를 이용하는 초기화 방법 중에서 선택이 가능하다.

그러나 일반적으로 멤버변수의 초기화에 있어서는 이니셜라이저를 선호하는 편이다.

여기에는 다음 두 가지 이점이 있기 때문이다.


1. 초기화의 대상을 명확히 인식할 수 있다.

2. 성능에 약간의 이점이 있다.




'Programming > C++' 카테고리의 다른 글

private 생성자  (0) 2012.05.20
디폴트 생성자(Default Constructor)  (0) 2012.05.20
생성자(Constructor)  (0) 2012.05.12
캡슐화  (0) 2012.05.12
const 함수  (2) 2012.05.08
Posted by scii
: