728x90
멤버 이니셜라이져(Member Initializer)
말 그대로 클래스의 멤버를 초기화 하는 것으로
클래스
{
멤버변수 1, 멤버변수 2;
}
클래스명(타입1 변수1, 타입2 변수2) : 멤버변수1(변수1), 멤버변수2(변수2){} 방식이다.
ex)
class Student
{
int id;
float num;
}
Student(int _id = 0, float ft_num = 0.0f) : id(_id), num(ft_num){}
이 문장들은 멤버변수 id와 num을 변수 _id 와 ft_num으로 초기화 하라는 말이다.
멤버 이니셜라이져는 생성자의 몸체부분보다 먼저 실행되는 특징이 있기 때문에 상속을 받은 클래스에서 부모 클래스의 변수를 초기화 해야 할 필요가 있을 경우 사용한다.
또한 const 멤버 변수를 초기화 할 수 있는 특징도 가지고 있기에 유용하게 쓰이는 문법이다.
그래서 const 멤버 변수는 반드시 이니셜 라이져를 이용해서 초기화 한다.
effective c++에서는 클래스의 변수를 초기화할 때에는 생성자의 함수 몸체에서 하지말고 멤버 이니셜라이져를 사용해라고 한다. 이유는 생성자의 멤버 이니셜라이져는 초기화이지만, 생성자의 함수 몸체에서 한다면 그것은 그냥 대입이라고 한다.
728x90
'Basic Programming > C, C++' 카테고리의 다른 글
C++ - ++i 와 i++의 차이 (0) | 2016.03.03 |
---|---|
C++ - #pragma (0) | 2016.03.03 |
C++ - ZeroMemory와 memset의 차이 (0) | 2016.03.03 |
C++ - volatile 과 register 키워드 (0) | 2016.03.03 |
C++ - 타입 캐스팅(static_cast, reinterpret_cast, dynamic_cast, const_cast) (0) | 2016.03.03 |