【发布时间】:2012-11-10 13:08:53
【问题描述】:
假设我有这样的课程
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。在这方面,默认值没有什么特别之处。
-
@AndreyT:我没想到所有构造函数都会初始化 vptr。后来,看到答案后,我的疑惑解开了。
标签: c++ polymorphism virtual-functions vptr