您的位置:首页 > 其它

类的大小——sizeof 的研究(2.虚函数继承)

2009-05-12 18:59 225 查看
上一篇文章研究了关于类大小的4条规则后,我们再结合虚函数表,来研究下类的大小。



class Base
{
public:
	Base(){};
	virtual ~Base(){};
	void set_num(int num)
	{
		a=num;
	}
	virtual int get_num()
	{
		return a;
	}
private:
    int  a;
    char *p;
};

class Derive:public Base
{
public:
	Derive():Base(){};
	~Derive(){};
         virtual int get_num()
	{
		return d;
	}
private:
	static int st;
         int  d;
         char *p;
	char c;

};

int main() 
{ 
	cout<<sizeof(Base)<<endl;
	cout<<sizeof(Derive)<<endl;
	return 0;
}




在Base类里添加了virtual int get_num()函数,而子类也重新实现了virtual int get_num()函数。

但是结果依然是

12

24



说明子类只是共用父类的虚函数表,因此一旦父类里有虚函数,子类的虚函数将不计入sizeof大小。



这可以认为是一个补充规则。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: