1:インライン
通常の関数は、実行するためのメモリアドレスの直接の関数であるが、インライン関数は、指定された場所が検索に行っていない、関数内の主要機能をコピーすることです。
機能コードの実行時間は、インライン通話時間とこの時間が比較的長く、非常に短いです。コードが長時間実行された場合でも、メモリのコスト関数にこの時間インライン関数では推奨されない関数呼び出しの時間よりも長い転送されます。
インライン関数は、通常の関数よりも一般的に高い効率が、欠点は、大量のメモリ消費です。
しかし、インライン関数の定義では、一般的な増加
1の#include <ビット/ STDC ++ H.> 2 使用して 名前空間STD; 3インラインINT S(INT NUM) 4。 { 5。 復帰 NUM * NUM; 6 } 。7 の#define SL(NUM)NUMの*のNUM // 将来の使用の全てにおいて、S *は自動的にNUM NUMに置き換えられる(NUM) 8。 INT メイン() 9。 { 10 COUT << S(5)<< ENDL; // 25 11。 COUT << S(5 + 10)<< ENDL; / / 225 12 << S1をCOUT(5)<< ENDL; // 25 13である COUT << SL(5 + 10)<< ENDL; // 65 14 // もちろん、エラーマクロ定義の最終結果は、彼のアイデアを算出します5 * 10 + 5 + 10は、従って、C ++インラインで、推奨されないマクロ推奨 15 リターン 0 ; 16 }
2:参考資料
const int型&REFVALUE = 12の//定数が続くことができます
(明示的に参照変数を変更したい場合を除き)参照習慣プラスのconstを使用するときは、変数への任意の変更を防止することができます。
1つの#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 ボイド Swap1(INT NUM1、INT NUM2)// 传参 4 { 5 int型温度; 6 TEMP = NUM1。 7 NUM1 = NUM2。 8 NUM2 = TEMP。 9 } 10 空隙 Swap2(INT * NUM1、INT * NUM2)// 传指针 11 { 12 int型温度; 13 TEMP = *NUM1; 14 * * = NUM1 NUM2; 15 * NUM2 = TEMP; 16 } 17 空隙 Swap3(INT&NUM1、INT&NUM2)// 参照 18である { 19 のint TEMP; 20である TEMP = NUM1; 21である NUM1 = NUM2; 22である NUM2 = TEMP; 23である } 24 のint main()の 25 { 26は INT NUM1、NUM2; 27 COUT << " 交換される2つの入力パラメータ" <<endl; 28 CIN >> NUM1のNUM2; 29 swap1(NUM1、NUM2); //は、交換を実現していない、のコピーにあるため、パス 30 はcout << " 交換の結果として、質量参加:" << NUM1 << " \ T " << NUM2 << ENDL; 31であり ; Swap2(&NUM1、&NUM2)// コンテンツを交換する内部アドレスであるので、実施交換 32 COUT << " :合格ポインタ交換結果" << NUM1 << " \ T " << NUM2 << ENDL; 33である Swap3(NUM1、NUM2)。// 実現交換参照変数は、実際の別名である 34 COUT << 「基準交換結果:" << NUM1 << " \ tの" << NUM2 << ENDL; 35 リターン 0 ; 36 }
1つの#include <ビット/ STDC ++ H.> 2 使用して 名前空間STDは、 3 INT&SUM()// タイプは、時間の参照型で戻り、ローカル変数を返すことができません 4。 { 5。 int型 NUM = 10 ; 6 INT&RNUM = NUM ; 7 戻り RNUM; //は、ローカル変数を返すことができない 8。 } 9。 ボイド試験() 10 { 11。 INT X = 1、Y = 2、Z = 3。; 12れる } 13は、 INT (メイン) 14 { 15 INT&RESULT = SUM(); // RNUMがローカル変数であるため、機能が回復系の終わりであろう 16 試験(); // 回収ような位置結果が参照され、それが他の変数に適用され、データ占有率を変更することができます 17 << COUT 「結果= 」 << ENDL <<結果; // 2 =結果は、空間データが変更され、したがって、ローカル変数参照型を返すことができない説明 18である リターン 0 ; 19 }
戻り型は、参照型のみ着信参照に戻ることができています
コードは、戻り値が、またはそのNUM1をNUM2に渡されたカットチェンジパラメータで、戻り値を返すことができます。
結果はNUM同じ空間を示すため、不注意による変更の参照を防止するように上記のコード、結果は、numはまた、修飾、修飾されている一般プラスCONSTです。
参照によって渡された配列の基本型は、AHの使用を阻止ああ構造オブジェクトは、多くの場合、参照を使用します
3:デフォルトパラメータ
1 #include <bits/stdc++.h> 2 using namespace std; 3 void test(int x = 10)//默认值是10 4 { 5 cout << x << endl; 6 } 7 void test1(int x, int y = 10)//从右到左按顺序声明 8 { 9 10 } 11 void test2(int x = 10, int y){//必须先默认右边的 12 13 } 14 int main() 15 { 16 test();//不写参数默认传10 17 test(100);//指明了参数 18 19 return 0; 20 }
4: 模版
1 #include <bits/stdc++.h> 2 using namespace std; 3 template<typename T> 4 void Swap(T& a,T& b)//可以传入任何类型,系统根绝传入的数据判别类型,大大提高代码的通用性 5 { 6 T temp; 7 temp = a; 8 a = b; 9 b = temp; 10 } 11 int main() 12 { 13 cout << "请输入两个整数:" <<endl; 14 int a,b; 15 cin >> a >> b; 16 Swap(a, b); 17 cout << "交换的结果为: "; 18 cout << a << "\t"<< b << endl; 19 cout << "请输入两个字符串:" <<endl; 20 string a1, b1; 21 cin >> a1 >> b1; 22 Swap(a1, b1); 23 cout << "交换的结果为: "; 24 cout <<a1 << "\t" << b1; 25 return 0; 26 }
5:函数重载
1 #include <bits/stdc++.h> 2 using namespace std; 3 void test(int x)//默认值是10 4 { 5 cout << x << endl; 6 } 7 void test() 8 { 9 cout << "test()" << endl; 10 } 11 int main() 12 { 13 //名字相同,参数列表不同,所以认为重载 14 test();//不带参数的 15 test(100);//带参数的, 16 17 return 0; 18 }