1 つの名前空間
1-1 名前空間の定義
ネームスペースを定義するの目的は、識別子の名前と競合しないことです。ネームスペースでは、関数、変数、型を定義できます。
例: ここの rand と strlens は実際には関数です。名前空間では、グローバル スコープの rand 関数および strlens 関数との競合を回避できます。第 2 に、名前空間は定義内でネストすることもできます。
同時に、ネームスペースによって新しいスコープが定義されます。ネームスペース内のすべてはそのネームスペースに制限されます
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
namespace bit
{
int rand = 10;
int strlens = 20;
int Add(int a, int b)
{
return a + b;
}
class bit
{
int Sub(int a = 4, int b = 5)
{
return b - a;
};
double _money;
float _lucky;
int _life;
namespace character
{
char* next;
int people;
}
}
1-2 ネームスペースの使用
方法 1: 名前空間名 + スコープ修飾子を追加する
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
namespace bit
{
int rand = 10;
int strlens = 20;
int Add(int a, int b)
{
return a + b;
}
class bit
{
int Sub(int a = 4, int b = 5)
{
return b - a;
};
double _money;
float _lucky;
int _life;
}*p;
namespace character
{
char* next;
int people=10;
}
}
int main()
{
cout << bit::character::people<< endl;
return 0;
}
方法 2: using を使用して名前空間のメンバーを導入する
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
namespace bit
{
int rand = 10;
int strlens = 20;
int Add(int a, int b)
{
return a + b;
}
class bit
{
int Sub(int a = 4, int b = 5)
{
return b - a;
};
double _money;
float _lucky;
int _life;
}*p;
namespace character
{
char* next;
int people=10;
}
}
using bit::Add;
int main()
{
cout << Add(4,5)<< endl;
return 0;
}
方法 3: using 名前空間を使用して名前空間を導入する
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
namespace bit
{
int rand = 10;
int strlens = 20;
int Add(int a, int b)
{
return a + b;
}
class bit
{
int Sub(int a = 4, int b = 5)
{
return b - a;
};
double _money;
float _lucky;
int _life;
}*p;
namespace character
{
char* next;
int people=10;
}
}
using namespace bit;
using namespace character;
int main()
{
cout <<people << endl;
return 0;
}
2 C++ の入出力
C++ の入力と出力は自動的に型を識別するため、非常に便利です。C のように出力の型を指定するために printf を必要としません。第二に、C++ にはヘッダー ファイルもインクルードする必要があります。入力ストリーム cout に必要なヘッダー ファイルおよび出力ストリーム cin は #include<iostream>、<< はストリーム挿入演算子、>> はストリーム抽出演算子、std は C++ 標準ライブラリの名前空間名、C++ は定義と実装を配置します。この名前空間の標準ライブラリの。
3 デフォルトパラメータ
呼び出される関数にはパラメーターを含めないか、パラメーターをデフォルトにすることができます。いくつかの例を次に示します。
void fun(int a = 10)
{
cout << a << endl;
}
int main()
{
fun(2);
fun();
return 0;
}
複数のパラメータがある場合、デフォルトは分離できず、デフォルトは右から左にのみ連続することができます。
int fun(int a = 10,int b=6,int c = 8)
{
return a + b + c;
}
int main()
{
cout << fun(2, 4) << endl;
cout << fun(4, 4, 4) << endl;
cout << fun(5) << endl;
fun(5);
return 0;
}
4 関数のオーバーロード
つまり、同じ関数名で異なるパラメーターの型を使用することができ、コンパイラは自動的に関数のパラメーターの型を識別し、それに応じて一致させます。
int fun(int a = 10,int b=6,int c = 8)
{
return a + b + c;
}
void fun(char* p, char a, int b)
{
cout << p << endl;
cout << a << endl;
cout << b << endl;
}
int main()
{
char arr[15] = "I love China!";
cout << fun(2, 4) << endl;
fun(arr, 65, 4);
return 0;
}
5 引用符
引用することは別名をとることにも相当し、たとえばあなたの名前にもニックネームとビッグネームがあります。
参照される変数は実際には変数そのものであり、構文上では、エイリアスと元の名前が同じ空間を共有することが参照されます。
しかし、基礎となるロジックは異なり、基礎となるロジックはポインタです。
int main()
{
int a = 10;
int& b = a;
b = 100;
cout << a << endl;
return 0;
}
6 内联函数
インライン関数は、実際には空間を時間と交換する方法です。インライン関数は、関数スタック フレームを開くことなく、呼び出された場所で展開され、プログラムの実行効率が向上します。ただし、インライン関数の空間が関数が大きい場合、それは非常に困難になります。大きい場合、コンパイラーは自動的にそのインラインを定義解除します。
キーワード変更: インライン
次のアセンブリ コードは fun 関数のスタック フレームをまったく開いておらず、ただ呼び出されているだけであることがわかります。