構造、分析、虚数関数を使用して、小さな詳細
1313 ワード
1.コンストラクションとコンストラクションで虚関数を呼び出さないでください.派生クラスの虚関数を呼び出したいですが、構造が失敗してベースクラスの虚関数になりました.もしベースが純虚関数であれば、エラーが発生する可能性があります.
ピュア Virtual Function Called
参考できる:http://dev.yesky.com/365/2028365.shtml
2.デフォルトの構造と非デフォルトのコンストラクタを含むクラスは、コンストラクタ内で他のタイプのコンストラクタを呼び出さないでください.このように二次呼出の構造関数が失効する可能性があります.二次呼出の構造関数として、一時変数を作成したのに相当します.往々にしてオブジェクトを構成すると、まずコンストラクタに入りました.実はこのタイプが構造に先に入って、二次呼出構造で、一時的なオブジェクトを作成して、二次構造から退出すると、分析構造が呼び出されます.
class CBase
{
public:
CBase()
{
}
~CBase()
{
}
};
class CSub:public CBase
{
public:
CSub(int i):m_i(i)
{
}
CSub()
{
m_i = 0;
}
CSub(int i,int t)
{
CSub(); // CSub(i) i ,CSub(i) i
}
void SetI(int i){m_i = i;}
int GetI(){return m_i;}
private:
int m_i;
};
int _tmain(int argc, _TCHAR* argv[])
{
CBase* p = new CSub(2,22);
delete p;
return 0;
}
3.クラスオブジェクトの定義は、複数の形式があります.
CBase* p = new CSub(2,22);
delete p;
CSub s1;
CSub s2(22);
CSub s3(23,33);
CSub s4();// CSub s1l
CSub();// CSub , ,
CSub(i);// , i 。
i.SetI(3);
int n = i.GetI();