使用
インラインインライン改質剤は、関数呼び出しのオーバーヘッドを減らすことができ、機能に小さく、頻繁にコールのボリュームを変更するために使用されます。
いわゆるオーバーヘッド削減のコードは、関数insertのボディにコンパイルされたプログラムが機能を実行する際に、頻繁にジャンプのスタック内のスペースを消費する必要がないように、同様の効果やマクロを達成するために、。
経験的には、以下の10行で関数本体は、実行ロジックは、(書き込み値、簡単な判断力と計算)非常にシンプルで、非常に多くの場合、特にサイクルに置かれるプロジェクトのコードが実行されている、呼び出され、接触他のモジュールの機能は、インラインで書くことができます。
フォーマット:
インライン+ <関数ヘッダ>
使用するのは簡単で、プラスヘッドラインにインライン関数の前に、それは、注意しなければならないインライン関数がそのプロトタイプ与えられた場で修正します。ただ、インライン修飾子は文として使用することはできません。
以下の文言が許可されていません。
インラインint型の最大値(int型、int型のB)。 int型の最大値(int型、int型のB) { // ...... }
以下の文言が許可されています。
int型の最大値(int型、int型のB)。 インラインint型の最大値(int型、int型のB) { // ...... }
また、声明を切り替え、一方、インライン関数は、使用することはできません。クラス内でC ++のメンバ関数は、デフォルトの機能によって拘束されます。
それは十分に単純でない限り注意は、機能を抑制しました。最高のは、彼らが使用するヘッダファイルを書き込み統一します。
そして、の違いは、マクロ何ですか?
実行時デバッグ時1インライン関数ではなく、マクロ定義。
2.関連したコンパイラのパラメータは、セキュリティチェック機能や自動変換(同じ一般的な機能)を実行し、マクロが定義されていません。
3.メンバ変数インライン関数は、クラスではなく、マクロ定義にアクセスすることができます。
クラス内で宣言4メンバ関数も自動的にインライン関数に変換定義します。
マクロは、任意の認証コード列交換せずに簡単で、インライン関数はまだ最終的な分析関数です。
練習
構造を定義し、奇数格納するために使用される二つの内部ベクトル容器、およびストアへの1つのであっても多数存在します。
2つのインライン関数が決定された第1の特定の数は、奇数または偶数である第2のデジタルベクトルコンテナ構造を区別書き込むために、定義されています。
0〜99の範囲内百数を検出、それぞれ、すべての奇数と偶数表示されます。
extra.h
#ifndefの_EXTRA_H_ の#define _EXTRA_H_ 書式#include <iostreamの> の#include <ベクトル> 使用してのstd ::ベクトルを、 符号なしのtypedef 短い UINT8。 typedefのブール B; typedefは構造体 { ベクトル <UINT8> oddnumbers。 ベクトル <UINT8> evennumbers。 } NUMBERS_ST。 NUMBERS_STのhundred_numbers。 インラインBのcheck_odd_even(UINT8 n)が { リターン(N%2 > 0)?真:偽; } インラインボイドwrite_odd_even_numbers(UINT8 n)が { もし(check_odd_even(N)) { hundred_numbers.oddnumbers.push_back(N) } 他 { hundred_numbers.evennumbers.push_back(N) } } #endifの // _EXTRA_H_
main.cppに
#include " extra.h " int型のmain() { 用(UINT8 i = 0 ; iは< 100 ; iが++ ) { write_odd_even_numbers(I); } std :: coutの << " 奇数番号:\ nを" ; ため(UINT8 iが= 0 ; iがhundred_numbers.oddnumbers.sizeを()<; iは++します) { std :: coutの << hundred_numbers.oddnumbers [I] << " " ; } std :: coutの << " \ nを" ; std :: coutの << " でも番号:\ nを" ; ため(UINT8 iが= 0 ; iがhundred_numbers.evennumbers.sizeを()<; iは++します) { std :: coutの << hundred_numbers.evennumbers [I] << " " ; } }
結果