A类(比如说),只有静态成员函数,B类(比如说)只有成员函数
如果我创建类 A 的 1000 个实例。由于该类仅包含静态成员函数,因此即使有 1 个或 1000 个实例,内存也不会增加。
但是,对于 B 类。如果我创建 1000 个实例,是否会增加内存(即使是最轻微的,可能是每个对象指向成员函数集的指针)?
如果不是,那么编译器如何跟踪特定对象的成员函数信息?
会不会增加内存(哪怕是最轻微的,可能每个对象都有一个指针指向成员函数集)?
不。
非虚拟成员函数不会影响类对象的大小。
但是,虚拟成员函数的存在通常会增加类对象的大小。
请注意,后者纯粹是特定于实现的细节,但由于所有已知的编译器都使用v-tableand实现了虚拟机制v-ptr,因此可以合理地假设几乎所有编译器都会显示相同的行为v-ptr,即向该多态类的每个对象添加 a从而增加了类对象的大小相当于v-ptr.
| 归档时间: |
|
| 查看次数: |
2519 次 |
| 最近记录: |