为了使我的问题清楚,我将举一个简化的例子:
class Foo {
public:
class Bar {
int garbage[1000000];
};
void playWithGarbage() {
//whatever...
}
}
现在,如果我生成了很多Foo实例并通过值或引用传递它们。是否会有任何重大开销?我测试了大小,没关系:sizeof(Foo)
返回1
答案 0 :(得分:5)
Foo
类型的对象不会产生任何开销。 Foo
只是作为包含Bar
的命名空间。 Foo::Bar
个对象的存在与Foo
个对象的存在无关。但是,如果Foo
有Bar
成员,那么类型为Foo
的对象会有Bar
类型的子对象,因此会有更大的尺寸。