gpt4 book ai didi

C++ 空类大小和默认函数

转载 作者:太空狗 更新时间:2023-10-29 20:43:03 25 4
gpt4 key购买 nike

http://www.careercup.com/question?id=17225664提到空类对象的大小至少为 1。

那么,当对象的大小如此之小时,如何将默认构造函数、析构函数、复制构造函数等合并到对象中?

最佳答案

So, How are default constructor, destructor, copy constructor etc incorporated in the object when it's size is so small?

那些是成员函数,成员函数的代码不会增加对象的大小。那只是代码。它不会为您创建的每个对象实例化。向类中添加成员函数不会增加该类实例的大小。它是代码,不是数据。

无论您创建该类的多少个实例,成员函数的代码都会生成一次,并且它通过访问隐式 this 指针作用于调用它的特定对象,该指针是被传递给它。简单来说,这个表达式:

obj.foo();

由编译器在内部转换成这个表达式:

foo(&obj);

在这方面,唯一可能影响类实例大小的是你的对象是否至少有一个虚函数;如果是这种情况,每个对象都必须存储一个指向其 vtable 的额外指针以启用多态分派(dispatch)。

关于C++ 空类大小和默认函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16761833/

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