継承
継承関係で呼び出す
#include "stdafx.h"
#include <iostream>
using namespace std;
#include "stdafx.h"
#include <iostream>
using namespace std;
// 부모
class CMyData
{
public:
CMyData() { cout << "부모 생성자 호출 " << endl; }
~CMyData() { cout << "부모 소멸자 호출 " << endl; }
int GetData() { return m_nData; }
void SetData(int nParam) { m_nData = nParam; }
protected:
void PrintData() { cout << "CMyData::PrintData()" << endl; }
private:
int m_nData = 0;
};
// 자식
class CMyDataEx : public CMyData
{
public:
CMyDataEx() { cout << "자식 생성자 호출 " << endl; }
~CMyDataEx() { cout << "자식 소멸자 호출 " << endl; }
void TestFunc()
{
PrintData();
SetData(5);
cout << CMyData::GetData() << endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
CMyDataEx data;
data.SetData(10);
cout << data.GetData() << endl;
data.TestFunc();
return 0;
}
子の作成者CMYData Exを呼び出すと、親の作成者が呼び出され、親の作成者が実行されると子の作成者が実行されます.
参照書式と線書式
#include "stdafx.h"
#include <iostream>
using namespace std;
// 부모
class CMyData
{
public:
int GetData() { return m_nData; }
void SetData(int nParam) { m_nData = nParam; }
CMyData()
{
cout << "부모 생성자 호출" << endl;
}
~CMyData()
{
cout << "부모 소멸자 호출" << endl;
}
private:
int m_nData = 0;
};
// 자식
class CMyDataEx : public CMyData
{
public:
void SetData(int nParam)
{
if (nParam < 0)
CMyData::SetData(0);
if (nParam > 10)
CMyData::SetData(10);
}
CMyDataEx()
{
cout << "자식 생성자 호출" << endl;
}
~CMyDataEx()
{
cout << "자식 소멸자 호출" << endl;
}
void show_child()
{
cout << "child" << endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
//추가
CMyData *tmp = new CMyDataEx(); // 상향 형변환
delete tmp;
return 0;
}
わかること消滅者問題
CMyData *tmp = new CMyDataEx();
tmpはリファレンスフォーマットと呼ばれ、CMyDataExというやつは実フォーマットと呼ばれています.
親を利用して子供を動的に分配することを、アップコンバートと呼ぶ.
問題は,子の消滅者を呼び出さないことである.
->このコードには問題はありませんが、サブコードと親コードにジェネレータにポインタを割り当てるコードがある場合は、サブコードを割り当て解除できます.
サブレベルの消滅者を呼び出さないため、メモリ漏洩が発生します.
=>サブアイテムを呼び出せない消滅者をアップコンバートします。
分かるポイント2アップコンバートではサブタイプは推定できません。
->訪問サブオブジェクトの関数を下に変換する必要があります。
アップコンバート時に動作が滞る。対応策を講じるべきだ。
Reference
この問題について(継承), 我々は、より多くの情報をここで見つけました https://velog.io/@kwt0124/상속テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol