假設我有這樣的其中是隻有參數化構造函數的類中初始化的vptr(虛擬指針)?
class Base
{
private:
int i;
int j;
public:
Base(int i)
{
this->i = i;
j = 0;
}
Base(int i, int j)
{
this->i = i;
this->j = j;
}
virtual void f()
{
cout<<"in base f()"<<endl;
}
};
vptr的一類被在構造函數中的開頭初始化。但在這種情況下,沒有默認構造函數,只有2個參數化構造函數。 VPTR將在哪裏初始化?
爲什麼你給* default *構造函數指定一些特別的重要性?所有構造函數都以完全相同的方式初始化vptr。在這方面沒有什麼特別的。 – AnT
@AndreyT:我沒有想到所有的構造函數都會初始化vptr。後來,在看到答案後,我的懷疑被清除了。 – bibbsey