자 오늘은 클래스의 맴버이니셜라이저에 대해서 알아보도록 하겠습니다.
먼저 모두 아시다시피 클래스에서는 맴버 변수와 const상수(변수)에는 직접적인 초기화가 불가능
하다는 것을 알고 계실거라 생각됩니다.
바로 이 때 이니셜라이저를 사용하면 선언과 동시에 초기화를 가능하게 할 수 있다는 점!!!
먼저 이니셜라이저를 사용하기 전 클래스에서의 초기화 방법은 아래예제와 같았을건데요.
맴버이니셜라이저 콜론( : )의 사용방법들은 예제소스에서 설명하겠습니다~
//맴버 이니셜라이저 이전 초기화.
#include <iostream>
using namespace std;
class Test
{
private:
int num1;
int num2;
public:
void Show_num()
{
//초기화 전 num1과 num2에 저장된 값을 출력하여 보기위하여.
cout << "초기화 전 num1의 값 : " << num1 << ", 초기화 전 num2의 값 : " << num2 << endl;
}
//참조자는 원래라면 변수를 통하여 참조하지만 const키워드를 이용하여
//상수값을 직접적으로 참조 할 수 있도록 함.
void Save_Data(const int &n1, const int &n2)
{
num1 = n1;
num2 = n2;
}
void Show_Data()
{ //Save_Data();맴버함수를 통하여 초기화 시켜준 후의값을 출력하여 보기 위하여.
cout << "n1을 통한 num1의 초기화 값 : " << num1 << ", n2를 통한 num2의 초기화 값 : " << num2 << endl;
}
};
int main(void)
{
Test test;
test.Show_num();
test.Save_Data(1, 2);
test.Show_Data();
return 0;
}
지금까지는 클래스 선언 시 위와 같이 선언하였을 것 입니다.
하지만!!! 맴버이니셜라이저를 사용하여 선언과 동시에초기화를 해주게 되면,
번거롭게 우회하여 초기화 해주지 않아도 된다는 점!
//맴버이니셜라이저를 이용한 초기화
#include <iostream>
using namespace std;
class Test
{
private:
int num1;
int num2;
public:
//이해를 돕기 위하여 num1은 기존의 방식대로 초기화.
//num2는 이니셜라이저를 이용한 초기화를 각각 해준 소스.
Test(const int &n1, const int &n2)
:num2(n2)
//와 같이 생성을 함과 동시에 뒤에 콜론 ( : )을 사용하여
//초기화를 해주고 싶은 맴버변수와 초기화 시켜주고 싶은 것을
//( ) 괄호 안에 넣어주면 되는 것이다.
{
num1 = n1;
}
void Show_Data()
{
cout << "이니셜라이저를 사용하지 않은 num1 : " << num1 << ", 이니셜라이저를 이용한 num2 : " << num2;
cout << endl;
}
};
int main(void)
{
Test test(1, 2);
test.Show_Data();
return 0;
}
과 같이 선언과 동시에 바로바로 맴버 변수나 const상수(변수)에 초기화가 가능하다는 엄청 편리한 점이!!!
이렇게 맴버이니셜라이저를 이용하여 클래스 선언과 동시에 초기화를 해주시게 되면,
해당 클래스에 속해 있는 변수들의 초기값 관리가 음청 편해지겠죵~?ㅎㅎ
맴버이니셜라이저에 대해서 이상으로 마치도록 하겠습니다~~~
그럼~~~ 씨~~~유~~~
'지식창고 > 프로그래밍' 카테고리의 다른 글
(C++)범위지정연산자란? (0) | 2019.08.03 |
---|---|
(C, C++)객체라는 의미는? (0) | 2019.08.03 |
(C++)클래스의 소멸자란? (0) | 2019.07.24 |
(C++)디폴트 생성자란? (0) | 2019.07.24 |
(C++)클래스의 깊은 복사란? (0) | 2019.07.18 |