また、フレームごとに数百万のget / setを実行していない限り、これらがインラインであるかどうかはほとんど関係ありません。正直なところ、眠りを失う価値はありません。
また、declaration +definitionの前に「inline」という単語を置いたからといって、コンパイラがコードをインライン化するわけではないことに注意してください。さまざまなヒューリスティックを使用して、それが理にかなっているかどうかを判断します。これは、多くの場合、速度とサイズの古典的なトレードオフです。ただし、VC ++には少なくとも力ずくの「__forceinline」キーワードがあり(GCCに何があるかはわかりません)、コンパイラーの派手なヒューリスティックを踏みにじります。私は本当にそれをまったくお勧めしません、そしてあなたが別のアーキテクチャに移植すると、それはおそらく間違っているでしょう。
すべての関数定義を実装ファイルに入れて、ヘッダーの純粋な宣言を残してください(もちろん、テンプレートメタプログラミング(STL / BOOST / etc)の場合を除きます。この場合、ほとんどすべてがヘッダーにあります;))
人々がインライン化するのが好きな古典的な場所の1つ(少なくとも私の出身地であるビデオゲームでは)は、数学のヘッダーにあります。クロス/ドット積、ベクトルの長さ、行列のクリアなどは、ヘッダーに配置されることがよくありますが、これは不要だと思います。9/10パフォーマンスに違いはありません。大きなベクトル配列を行列で変換するなど、タイトなループを実行する必要がある場合は、手動で数学をインラインで実行するか、コーディングする方がよいでしょう。プラットフォーム固有のアセンブラ。
ああ、そして別のポイントとして、クラスがコードよりも多くのデータである必要があると感じた場合は、抽象化のOOの手荷物をもたらさない、古き良き構造体の使用を検討してください。:)
申し訳ありませんが、それほど多くのことを続けるつもりはありませんでしたが、実際のユースケースを検討するのに役立つと思います。
幸運を。
シェーン