我的问题与 C++ 类定义有关。我知道如果类中存在许多成员变量。班级人数会增加。但是,增加类成员函数的数量不会影响其大小。但是,我想知道具有更多成员函数的类和具有更少成员函数的类之间的主要区别是什么。调用具有较少成员函数的类是否可能更快?
问问题
150 次
4 回答
4
您需要每个实例的空间来存储成员变量,但成员函数不是实例的一部分,至少不是直接的。每个附加的虚拟成员函数通常需要一个额外的指针,但该指针指向在类的所有实例之间共享的vtable,因此不会增加每个成员的大小。
非虚拟成员函数仅在代码内存中占用空间:它们的空间要求与独立函数没有什么不同,唯一的区别是用于传递指针的隐藏参数this
。
添加到类的第一个虚函数会添加一个额外的指针,指向存储实例所需的空间;额外的非虚拟成员函数根本不会影响空间需求。
于 2012-08-03T15:18:24.267 回答
2
不,唯一在这方面有任何区别的功能是虚拟功能,无论您有多少,它们都比通常的功能慢得多。在所有其他情况下,编译器确切地知道在调用特定函数时要运行什么代码,因此它不必进行任何搜索,方法的数量也无关紧要。
于 2012-08-03T15:17:33.573 回答
1
不,成员函数的数量对调用函数的速度没有影响(至少对于任何理智的实现)。对函数的任何调用都将被编译为设置函数参数的代码,然后使用调用指令。编译器在编译时解析函数的地址是什么,并在调用指令中使用它,或者使用虚函数,在表中查找要调用的地址。
于 2012-08-03T15:18:22.177 回答
1
具有较少功能的类不会比具有更多功能的类更有效。
算法和 I/O 对函数效率的影响最大。
但是编译时间会受到影响。
于 2012-08-03T15:21:14.953 回答