C++ 成员函数和类大小

标签 c++

<分区>

Possible Duplicate:
Why class size, depends only on data members and not on member functions?

当我第一次学习继承时,我的老师说,与数据成员相反,成员函数不会改变类的大小。也就是说,如果 B 类继承自 A 类,那么当且仅当至少添加一个数据成员时,B 的大小将大于 A 的大小,并且函数成员数量不会改变。 这是正确的吗?如果是这样,这个机制是如何运作的?似乎两个成员都应该保存在堆中,因此会增加大小。

谢谢, 盖伊

最佳答案

成员变量存储为每个类实例的一部分。但成员函数不是。

类的每个实例都必须有每个成员变量的单独拷贝。这使每个对象都是唯一的。

但是成员函数是代码。而且无论您有多少个特定类的实例,都绝对没有理由拥有代码的多个拷贝。相同的代码只是对实例数据进行操作。

由于代码不同,代码不是类实例大小的一部分。并且 sizeof(myClass) 不会包括代码占用的字节数。

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

相关文章:

c++ - 如果一个方法不修改类本身的实例,而是修改类中嵌入的外部机制,我是否应该将其标记为 const?

c++ - 如何对使用Luabridge返回std:vectors的类方法使用.addFunction

c++ - 具有非常小块的持久映射缓冲区 (glBufferStorage GL_MAP_PERSISTENT_BIT)

c++ - 在 translations.qrc 文件中读取翻译器文件 .ts/.qm

c++ - 检索 MAPI 通讯簿条目的联系人图片

c++ - int(int(-2)/unsigned(2)) = 2147483647 无警告

c++ - 如何创建抽象类成员?

c++ - 如何停止执行第一个子进程?

c++ - VS2013中生成MOC文件

c++ - 包含抽象父类(super class)列表的类,我需要 #include 所有子类吗?