継承
1.定義
2つ以上のクラス間の関係に基づいて
2.基本文法
//기본,부모 클래스
class CMyData
{
public:
CMyData() {cout << "CMyData 생성자 호출" << endl;}
int GetData() {return nData;}
void SetData(int nParam) {nData = nParam;}
//파생 클래스만 접근 가능
protected:
void PrintData() {cout << "CMyData 메서드 호출" << 두이;}
// 해당 클래스외 접근 불가능
private:
int nData = 0;
};
//파생,자식 클래스
class CMyDataEx : public CMyData
{
public:
CMyDataEx() {cout << "CMyDataEx 생성자 호출" << endl;}
void TestFunc()
{
//기본 클래스 맴버에 접근
PrintData();
SetData(5);
cout << CMyData::GetData() << endl;
}
};
//사용자 측면
int main()
{
CMyDataEx data;
//기본 클래스 멤버 접근
data.SetData(10);
cout << data.GetData() << endl;
//파생클래스 멤버 접근
data.TestFunc();
return 0;
}
3.再定義方法
//초기 제작 클래스
class CMyData
{
public:
CMyData() {cout << "CMyData 생성자 호출" << endl;}
int GetData() {return nData;}
void SetData(int nParam) {nData = nParam;}
// 해당 클래스외 접근 불가능
private:
int nData = 0;
};
//후기 제작 클래스
class CMyDataEx : public CMyData
{
public:
CMyDataEx() {cout << "CMyDataEx 생성자 호출" << endl;}
void SetData(int nParam)
{
//기능추가
//재귀호출 방지하기위해 소속 클래스 명시 필요
if(nParam < 0) {CMyData::SetData(0);}
if(nParam > 10) {CMyData::SetData(10);}
}
};
//사용자 측면
int main()
{
//구형은 값 보정 기능x
CMyData a;
a.SetData(-10);
cout << a.GetData() << endl;
//신형에는 값 보정 기능o
CMyDataEx b;
b.SetData(15);
cout << b.GetData() << endl;
return 0;
}
Reference
この問題について(継承), 我々は、より多くの情報をここで見つけました https://velog.io/@jmjung9304/상속テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol