如何找到抽象类的大小?
class A
{
virtual void PureVirtualFunction() = 0;
};因为这是一个抽象类,所以我不能创建该类的对象。如何使用'sizeof‘运算符找到抽象类A的大小?
发布于 2010-04-14 15:55:50
您可以使用sizeof运算符:
int a_size = sizeof(A);发布于 2010-04-14 15:58:02
直接的答案是sizeof操作符可以接受对象或类型:
sizeof (A)但说真的,你为什么要这么做呢?您提出这个问题似乎是一个值得关注的问题。
发布于 2010-04-14 16:07:51
如前所述,这个问题没有实际意义--一个实例有一个大小,但是一个类实际上没有。因为你不能创建一个抽象类的实例,所以它的大小基本上是一个没有意义的概念。您可以使用sizeof(A),但结果意义不大--多亏了空基类优化(举个明显的例子),sizeof(A)不一定会告诉您使用A作为基类会对派生类的大小有多大影响。
例如:
#include <iostream>
class A {};
class B {};
class C {};
class D {};
class Z : public A, public B, public C, public D {};
int main() {
std::cout << "sizeof(A) = " << sizeof(A);
std::cout << "sizeof(Z) = " << sizeof(Z);
return 0;
}如果我在我的计算机上运行,sizeof(A)将显示为1。显而易见的结论是,sizeof(Z)必须至少为4 --但实际上,使用我手边的编译器(VC++、g++),它分别显示为3和1。
https://stackoverflow.com/questions/2635724
复制相似问题