class CBase
{
public:
CBase(int iNum) : m_iNumber(iNum)
{
}
CBase(CBase & oBase)
{
}
protected:
int m_iNumber;
};
class B : public CBase
{
public:
B(int iNum, int iNum2) : CBase(iNum), m_iNumber2(iNum2)
{
}
B(B & oB) : CBase(oB.m_iNumber)
{
m_iNumber2 = oB.m_iNumber2;
}
void show()
{
cout << m_iNumber << " " << m_iNumber2 << endl;
}
private:
int m_iNumber2;
};
如果沒(méi)有 B中的 拷貝構(gòu)造函數(shù) B(B & oB) : CBase(oB.m_iNumber) 后面的初始化CBase(oB.m_iNumber)則會(huì)報(bào)這樣的錯(cuò)誤:
error C2512: “CBase”: 沒(méi)有合適的默認(rèn)構(gòu)造函數(shù)可用
當(dāng)然以下這樣初始化更符合 都是 拷貝構(gòu)造函數(shù)的邏輯:
B(B & oB) : CBase(&oB)