.cpp ファイル内のインライン メンバー関数の定義
C では、理想的には、コンパイラーが使用できるように、インライン メンバー関数をヘッダー ファイル内で定義する必要があります。コンパイル中にインライン化します。ただし、クラス間の循環依存関係など、特定の状況ではヘッダーの外に実装を配置する必要がある場合があります。
指定された例では、クラス A にはクラス B が含まれており、クラス B には A の前方宣言が含まれています。この循環性により、クラス B の getA() 関数が B.cpp で定義されます。ここで疑問が生じます: コンパイラは引き続き getA() をインライン化しますか?その場合、どの定義が優先されますか?
C の FAQ によると、インライン関数の定義はヘッダー ファイルに配置する必要があります。それを使用するすべてのソース ファイルに表示されるようにします。したがって、このシナリオでは、B.cpp 自体内で呼び出される場合を除き、コンパイラーは getA() をインライン化しません。
ベスト プラクティスでは、inline キーワードはクラス外の関数定義で 1 回のみ使用する必要があると規定されています。体。したがって、ヘッダー ファイルに配置された inline キーワードはすべて冗長です。
残念ながら、コンパイラによるインライン化を確実にしながら、.cpp ファイルにインライン メンバー関数を定義する方法は知られていません。
以上が.cpp ファイルでインライン メンバー関数を定義してもインライン化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。