『C++Primer』読書ノート(11)


1.派生クラスのフィールド名またはメソッド名は、ベースクラスのフィールド名またはメソッド名を非表示にします.ただし、この非表示はマルチステートではありません.親ポインタでサブクラスメソッドを呼び出すには、単純な非表示ではなくvirtualを使用します.
2.名前の検索はタイプチェックより先です.
// ConsoleApplication3.cpp :              。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

class Base
{
public:
	virtual void Print()
	{
		cout<<"Base Function"<<endl;
	}
};

class Child : public Base
{
public:
	virtual void Print(int a)
	{
		cout<<"Child Function"<<endl;
	}
};


int _tmain(int argc, _TCHAR* argv[])
{
	Child c;
	//c.Print();        ,              ,        ,      
	//            ,                   ,      
	c.Print(1);
	return 0;
}
は、子メソッド名は親メソッド名と同じですが、パラメータが異なることに注意してください.
親のパラメータを呼び出すには、親のドメイン名、c.Base::Print();
3.虚構造関数
ダミー構造関数の役割は、子が親を継承し、親ポインタを使用してdelete操作を行う場合、ダミー構造関数が対応する子クラスに定義され、子クラス特有の構造関数操作が実行されます.そうしないと、親の構造関数のみが実行され、子クラス特有のリソースが解放されない可能性があります.ダミー構造関数は、親クラスの構造関数を自動的に呼び出します.