首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抽象类的大小

抽象类的大小
EN

Stack Overflow用户
提问于 2010-04-14 15:53:57
回答 7查看 2.6K关注 0票数 3

如何找到抽象类的大小?

代码语言:javascript
复制
class A
{
    virtual void PureVirtualFunction() = 0;
};

因为这是一个抽象类,所以我不能创建该类的对象。如何使用'sizeof‘运算符找到抽象类A的大小?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-04-14 15:55:50

您可以使用sizeof运算符:

代码语言:javascript
复制
int a_size = sizeof(A);
票数 9
EN

Stack Overflow用户

发布于 2010-04-14 15:58:02

直接的答案是sizeof操作符可以接受对象或类型:

代码语言:javascript
复制
sizeof (A)

但说真的,你为什么要这么做呢?您提出这个问题似乎是一个值得关注的问题。

票数 2
EN

Stack Overflow用户

发布于 2010-04-14 16:07:51

如前所述,这个问题没有实际意义--一个实例有一个大小,但是一个类实际上没有。因为你不能创建一个抽象类的实例,所以它的大小基本上是一个没有意义的概念。您可以使用sizeof(A),但结果意义不大--多亏了空基类优化(举个明显的例子),sizeof(A)不一定会告诉您使用A作为基类会对派生类的大小有多大影响。

例如:

代码语言:javascript
复制
#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。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2635724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档