、return文
1.ノンリターン参照型、戻り値は式にコピーされます。
2.オブジェクト自体を返し、その後、参照タイプを返します。
3.返さないローカル変数への参照を関数の終了が消えますので、ローカル変数。
第二に、スタティック(静的)ローカル変数
変数が静的ローカル変数の場合、変数は一度、プログラムの実行が終了するまで存在していた初期化されます。
第三に、インライン関数*
式を解くことよりもはるかに遅い関数を呼び出します。次いで、ショートプログラムフラグメントのため、インライン関数に指定されるようになって、これはオーバーヘッド書かれた機能を低下させます。
1 aaa.h 2インラインint型(最大のint、int型B) 3 { 4 戻り A> B?A:B; 5 }
ヘッダファイルに、典型的に、インライン関数、インラインの前に追加されていない場合でも、ヘッダに関数(定義される)として実装される場合、そのインライン関数です。
四、このポインタ*
各クラスのメンバー関数は、(静的メンバ関数は除く)の追加を有し、これは暗黙; と呼ばれるこの機能に形成され、呼び出された関数は、オブジェクトのアドレスに初期化されます。
第五に、constメンバ関数
バックパラメータプラスメンバ関数constキーワードのリストは、このポインタはconstオブジェクトのメンバーへのポインタである場合は、メンバ関数が呼び出されたオブジェクトの値を変更することはできません。
1つの 空隙のsetName(文字列名)のconst ; 2 3。 ボイド人::のsetName(文字列名)CONST 4。 { 5。 この - >名= 名; // このオブジェクトが実際に*人と呼ばれているが、値を変更することはできません 6 } // このコンパイル時エラーが、操作のタイプがあります。Constのstd ::文字列* =のstd ::文字列、 エラー
第六に、コンストラクタ
そして、同じクラスの名前、ノーリターン値は(空でもなし);役割は、コンストラクタを呼び出しますクラスオブジェクトを作成するときにメンバ変数を初期化することです。
コンストラクタ初期化子:結腸と{}との間の形状におけるコンストラクタパラメータは、リストの初期化の一部である後に、例えば:
1単位(INT PID、列名、int型の年齢):_ PID(PID)、_名(名前)、_年齢(歳){}。
直接メンバ変数を初期化するために使用されます。
七、関数のオーバーロード
この単純では、呼び出し時にエンドパラメータで呼び出すように機能するかを決定するために同じ関数名が異なる関数パラメータまたは異なる種類を指します。
戻り値は重負荷機能を構成することができないことに注意してください。
八の関数ポインタ***
これは、関数へのポインタではなく、オブジェクトへのポインタを指します。
戻り値などのパラメータのリストによって決定される特定のタイプの関数ポインタ、:INT(* MAX)(INT、INT); maxは関数ポインタである(戻り値がintである、パラメータリストがintであり、INT )機能。
1つの int型の最大値(INT、INT ); 2 。3 INT(* MAX)(INT、INT ); 4 5。 typedefで定義関数ポインタを簡略化することができる 6。のtypedef int型(* M)(INT、INT ); 7 mAの=最大; //は、関数ポインタ変数に対応する 8。 9。 int型の R&LT最大=(1、2); //は、ポインタにより関数を呼び出す、2当量 10 のint R&LT =(1、2)。
関数ポインタパラメータは、あなたがコールバックを(使用しない方法)を達成することができます:
1つの 空隙 F(ボイド(* X)(INT、INT )) 2 { 3 X(1、2 )。 4 } 5 6 7 空隙 F2(int型、int型B) 8 { 9 INT X = A + B。 10 }
説明:f関数を呼び出すには、このようなF2などのポインタを渡す必要があり、原因関数名に関数ポインタを表し、その後、関数f2の名前が直接過去、つまり、F(F2)に渡すことができ、f2のコールバックは、(パラメータの内側を指し、 INT、INT B)はF(X(1,2)です)。プロシージャを呼び出す:最初のコールF、必要な関数ポインタF、我々はF2上を通過し、次いで、X(1,2)バックF2を呼び出すために、これはコールバックです。
関数へのポインタを返します(使用されていませんか)