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