是否允许编译器省略非虚拟私有成员函数?

时间:2013-10-25 15:14:01

标签: c++

如果我有一个像这样的简单课程

class A {
    void private_function();
public:
    void public_function() { /* calls the private function in here */ }
};

编译器是否需要为private_function()发出目标代码,或者是否允许内联对private_function()的所有调用并从生成的可执行文件中省略private_function?

1 个答案:

答案 0 :(得分:4)

  

编译器是否需要发出private_function()

的目标代码

如果有人使用其地址,则必须这样做。

  

或是否允许内联对private_function()的所有调用并从生成的可执行文件中省略private_function

如果没有使用它的地址,是的。无论是否生成未使用的非内联版本,程序的行为都是相同的;因此,通过“似乎”规则,可以自由地不生成它。