#include <iostream>
using namespace std;
class Test {
int a;
public:
int getA() {
return a;
}
Test(): a(1){}
Test(int i): a(i){}
};
int main() {
Test t1(100);
cout << sizeof(t1) << " " << sizeof(1) << endl; // 4 4
return 0;
}
似乎c++中的类根本没有开销。 t1 的大小为 4,就像一个整数。如果我向 Test 添加另一个 int 成员,它的大小将增加到 8。
我本以为会大于 4
类真的没有开销吗?
最佳答案
It seems that classes in c++ have no overhead at all.
只要一个类没有虚函数,那么,是的。您期望什么样的开销?无虚拟类仅仅是变量的集合,具有一组与类型关联的函数。
class Foo {
int a;
int bar() const { return a*a; }
};
可以简单地替换为
struct Foo {
int a;
}
int Foo_bar(Foo const *that) {
return (that->a) * (that->a);
}
如果您编译了每个片段,您会发现汇编代码看起来几乎完全相同。
但是,如果您添加一个虚拟函数,游戏就会发生巨大变化。
关于c++ - sizeof() 是否显示 C++ 类开销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13230973/