http://www.careercup.com/question?id=17225664提到空类对象的大小至少为 1。
那么,当对象的大小如此之小时,如何将默认构造函数、析构函数、复制构造函数等合并到对象中呢?
http://www.careercup.com/question?id=17225664提到空类对象的大小至少为 1。
那么,当对象的大小如此之小时,如何将默认构造函数、析构函数、复制构造函数等合并到对象中呢?
那么,当对象的大小如此之小时,如何将默认构造函数、析构函数、复制构造函数等合并到对象中呢?
这些是成员函数,成员函数的代码不会增加对象的大小。那只是代码。它不会为您创建的每个对象实例化。向类添加成员函数不会增加该类实例的大小。它是代码,而不是数据。
无论您创建多少该类的实例,成员函数的代码都会生成一次,并且它通过访问this
传递给它的隐式指针来作用于调用它的特定对象。简单来说,这个表达式:
obj.foo();
由编译器在内部转换为以下表达式:
foo(&obj);
在这方面可能影响类实例大小的唯一因素是您的对象是否至少具有一个虚函数;如果是这种情况,每个对象都必须存储一个指向其vtable的附加指针以启用多态调度。