본문 바로가기

지식창고/프로그래밍

(C++)클래스의 맴버이니셜라이저란?

반응형

자 오늘은 클래스의 맴버이니셜라이저에 대해서 알아보도록 하겠습니다.

 

먼저 모두 아시다시피 클래스에서는 맴버 변수와 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