반응형
상속자는 객체 생성과 동시에 호출되어 멤버 변수를 초기화할 수 있게 해주는 함수이다.
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);
}
이렇게 여러개 멤버 변수를 초기화해 줄 수 있다.
반응형
'c++' 카테고리의 다른 글
[c++]디폴트 복사 생성자 (0) | 2021.03.04 |
---|---|
[c++] 문자열 동적 할당하여 저장하기 (0) | 2021.02.09 |
[c++] 정보 은닉 (Information Hiding) (0) | 2021.02.09 |
[c++] 클래스(class)란? (0) | 2021.02.05 |
[c++] 함수의 오버로딩( Function Overloding) (0) | 2020.12.15 |