c++

[c++] 상속자(Constructor)와 멤버 이니셜라이저(Member Initalizer)

TIM_0529 2021. 2. 9. 01:02
반응형

상속자는 객체 생성과 동시에 호출되어 멤버 변수를 초기화할 수 있게 해주는 함수이다.

ex)

class Simple {
private:
	int n;
	char name[20];
public:

	Simple(int num) { n = num; }
	void ShowSimple() { cout << n; }

};

int main(void)
{
	Simple sim(5);
	sim.ShowSimple();

	


}

 

Simple sim(5);를 보면 객체 생성과 동시에 5라는 정수 값을 넣어 Simple 클래스에 n값을 저장해 주었다.

이 문장은 

Simple sim=5;이 문장과 같은 뜻이다.

엄밀히 말하면 같은이란 말은 문제가 될 수 있긴 하지만(복사 생성자) 지금 나의 실력으로는 같다고 보면 될 것 같다.

실행 결과는 당연히 5가 출력이 된다.

저 5라는 값 말고 다른 값을 넣고 싶다면 

sim=Simple(num) 이렇게 해주면 된다.

생성자 옆에 {n = num;}을 더 간단히 줄여 볼 수 있다.

바로 

멤버 이니셜라이저를 사용하는 것이다.

이를 이용해 한번더 줄여서 작성해 보겠다.

class Simple {
private:
	int n;
	char name[20];
public:

	Simple(int num):n(num){
    //empty
    }
	void ShowSimple() { cout << n; }

};

int main(void)
{
	Simple sim(5);
	sim.ShowSimple();

	


}

멤버 이니셜라이저를 활용하면 코드를 좀 더 간단하게 작성할 수 있을 것 같다.

#include <iostream>
using namespace std;

class Mem {
private:
	int num;
	int num2;
	const int price;
public:
	Mem(int memnum) :num(memnum),num2(memnum),price(memnum){
		num++;
		cout << num<<endl<<num2;
	}
};

int main(void)
{

	Mem mem(23);

}

이렇게 여러개 멤버 변수를 초기화해 줄 수 있다.

반응형