gpt4 book ai didi

c++ - sizeof() 是否显示 C++ 类开销?

转载 作者:太空狗 更新时间:2023-10-29 19:44:10 27 4
gpt4 key购买 nike

#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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com