在另一个类中定义复杂(大型)类是否有任何开销?

时间:2013-05-21 17:31:24

标签: c++

为了使我的问题清楚,我将举一个简化的例子:

class Foo {
public:
    class Bar {
        int garbage[1000000];
    };
    void playWithGarbage() {
         //whatever...
    }
 }

现在,如果我生成了很多Foo实例并通过值或引用传递它们。是否会有任何重大开销?我测试了大小,没关系:sizeof(Foo)返回1

1 个答案:

答案 0 :(得分:5)

Foo类型的对象不会产生任何开销。 Foo只是作为包含Bar的命名空间。 Foo::Bar个对象的存在与Foo个对象的存在无关。但是,如果FooBar成员,那么类型为Foo的对象会有Bar类型的子对象,因此会有更大的尺寸。