内存静态函数 vs 成员函数

vam*_*msi 3 c++

A类(比如说),只有静态成员函数,B类(比如说)只有成员函数

如果我创建类 A 的 1000 个实例。由于该类仅包含静态成员函数,因此即使有 1 个或 1000 个实例,内存也不会增加。

但是,对于 B 类。如果我创建 1000 个实例,是否会增加内存(即使是最轻微的,可能是每个对象指向成员函数集的指针)?

如果不是,那么编译器如何跟踪特定对象的成员函数信息?

Alo*_*ave 5

会不会增加内存(哪怕是最轻微的,可能每个对象都有一个指针指向成员函数集)?

不。
非虚拟成员函数不会影响类对象的大小。
但是,虚拟成员函数的存在通常会增加类对象的大小。

请注意,后者纯粹是特定于实现的细节,但由于所有已知的编译器都使用v-tableand实现了虚拟机制v-ptr,因此可以合理地假设几乎所有编译器都会显示相同的行为v-ptr,即向该多态类的每个对象添加 a从而增加了类对象的大小相当于v-ptr.