1

C ++では、空の仮想デストラクタを使用して抽象クラス(インターフェイス)を定義するヘッダーファイルIhがあります。

class I
{
  public:

    virtual ~I() {}
};
  • 質問1:空のデストラクタのオブジェクトコードは、Ihを含む各.cppファイルのオブジェクトファイルに生成されますか?
  • 質問2:質問1の答えが「はい」の場合、これは問題になる可能性がありますか(異なるオブジェクトファイルで同じメソッド)?
4

1 に答える 1

5

いいえ、それはしません。クラス定義内で定義されたメソッドは自動的inlineに行われるため、心配する必要はありません。

マークされinline、実際にバイナリにインライン化されるメソッドは異なることに注意してください。inline単なるマーカーです(せいぜいコンパイラのヒント)。特にvirtual関数で。メソッドがマークされているかどうかに関係なく、ポリモーフィズムは機能することが保証されてinlineいます。

于 2012-05-31T11:14:50.190 に答える