2

このような単純なクラスがある場合

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

コンパイラは、private_function() のオブジェクト コードを出力する必要がありますか? それとも、private_function() へのすべての呼び出しをインライン化し、生成された実行可能ファイルから private_function を省略することが許可されていますか?

4

1 に答える 1

4

オブジェクトコードを出力するためにコンパイラが必要ですか?private_function()

何かがそのアドレスを使用する場合は、そうする必要があります。

または、生成された実行可能ファイルへのすべての呼び出しをインライン化しprivate_function()たり、省略したりできますか?private_function

何もそのアドレスを使用しない場合は、はい。プログラムの動作は、未使用の非インライン バージョンを生成したかどうかに関係なく同じです。したがって、「as if」ルールにより、それを生成しないことは自由です。

于 2013-10-25T15:30:50.273 に答える