ホームページ >バックエンド開発 >C++ >.cpp ファイルでインライン メンバー関数を定義してもインライン化できますか?

.cpp ファイルでインライン メンバー関数を定義してもインライン化できますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-28 17:34:30396ブラウズ

 Can I Define Inline Member Functions in a .cpp File and Still Get Inlining?

.cpp ファイル内のインライン メンバー関数の定義

C では、理想的には、コンパイラーが使用できるように、インライン メンバー関数をヘッダー ファイル内で定義する必要があります。コンパイル中にインライン化します。ただし、クラス間の循環依存関係など、特定の状況ではヘッダーの外に実装を配置する必要がある場合があります。

指定された例では、クラス A にはクラス B が含まれており、クラス B には A の前方宣言が含まれています。この循環性により、クラス B の getA() 関数が B.cpp で定義されます。ここで疑問が生じます: コンパイラは引き続き getA() をインライン化しますか?その場合、どの定義が優先されますか?

C の FAQ によると、インライン関数の定義はヘッダー ファイルに配置する必要があります。それを使用するすべてのソース ファイルに表示されるようにします。したがって、このシナリオでは、B.cpp 自体内で呼び出される場合を除き、コンパイラーは getA() をインライン化しません。

ベスト プラクティスでは、inline キーワードはクラス外の関数定義で 1 回のみ使用する必要があると規定されています。体。したがって、ヘッダー ファイルに配置された inline キーワードはすべて冗長です。

残念ながら、コンパイラによるインライン化を確実にしながら、.cpp ファイルにインライン メンバー関数を定義する方法は知られていません。

以上が.cpp ファイルでインライン メンバー関数を定義してもインライン化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。