「チャンスは無限だと思っているから、目の前の人を大切にしないんですね。」
序文
C++ というと、複雑な構文や多数のルールを思い浮かべる人が多いですが、Java や Python などの言語に比べてプログラマの要求は高くなりますが、効率が高いなど C++ の利点も明らかですこの記事では、C 言語から始めて、C++ の基本的な構文について説明します。
名前空間
C++ という言語は、実際には C 言語の欠陥や欠点を解決するために発明されました。 C 言語で大きな問題となるのは、 変数命名冲突
の問題です。これには、自己定義変数とライブラリで定義された変数間の名前の競合、および自己定義変数間の名前の競合が含まれます。この問題は C++ でうまく解決されます。
そのため、 命名空间
の概念が C++ で定義されています。名前空間は、名前の競合を避けるために、グローバル スコープをより小さく、より具体的な領域に分割する方法です。コード内で 区域
, を定義できます。その中で定義されているすべての変数、関数、クラスなどの名前が、他の名前空間で定義されている名前と競合しないようにするため。名前空間はキーワード namespace
を使用して定義され、内部のドメイン修飾子は次のとおりです: ::
以下は、C++ で名前空間を使用する方法を示す例です。
// 定义命名空间
namespace zyb
{
int rand = 0;
}
int main() {
// 使用命名空间中的变量
printf("%d\n",zyb::rand);
return 0;
}
このうち、zyb は自分で定義した名前空間の名前で、デフォルトではコンパイラは名前空間で制限された領域には行かず、定義された変数、関数、クラスなどが存在するかどうかだけを調べます。 命名空间名::命名空间中的变量名
を追加して、名前空間で修飾された変数を使用します。
名前空間を拡張する
ネームスペースを使用する場合、ネームスペース内で変数やクラスなどを頻繁に使用する場合、ネームスペースを指定するために修飾子を頻繁に使用するのは面倒です。次に、プロジェクト内で名前の競合が発生しないことが確実な場合、または自分で練習している場合は、 直接展开命名空间
名前空間、変数、クラスなどを展開した後、名前空間は直接使用できますが、必要はありません。その後、修飾子を使用して名前空間を指定します。
名前空間形式を展開します。
using namespace 命名空间名;
公式の C++ 名前空間で入力と出力を使用する
C++ コードを見るとき、入力と出力を表す次のようなコードを見たことがあると思います。
std::cout << "hello wrld";
std::cin >> a;
このうち、<<と>>はヘッダファイル<iostream>の一部であり、それぞれストリーム挿入演算子、ストリーム抽出演算子と呼ばれます。 cout と cin は C++ の IO ストリーム オブジェクトです。cout はコンソールまたはファイルにデータを出力でき、cin はコンソールまたはファイルからデータを読み取ることができます。これら 2 つの IO ストリーム オブジェクトは < iostream > で定義されており、標準名前空間 std のコンポーネントです。std:: で変更された後、コンパイラはこのオブジェクトを見つけて使用できます。
では、std:: が多くのコードで使用されていないのはなぜでしょうか?
公式の名前空間で定義されているため、日常の練習用に事前に拡張できます。
using namespace std;
ただし、名前の競合が発生しやすいため、エンジニアリング プロジェクトでは std を拡張しないようにしてください。
もちろん、大規模なプロジェクトでは、便宜上、指定展开
メソッドを使用することもできます。つまり、std 内の cout cin などのみが拡張されて使用されます。
using std::cout;
using std::cin;
これにより、std をすべて展開した場合に発生する可能性のある名前の競合の問題が回避されるだけでなく、書き込みも容易になります。
IOストリーム入出力の使い方
正式な名前空間が拡張されると、cout と cin を使用して入出力を簡単に実装できます。
#include <iostream>
using namespace std;
int main() {
int num;
cout << "请输入一个整数:" << endl;
cin >> num;
cout << "您输入的数值是:" << num << endl;
return 0;
}
endl は改行を意味し、C 言語の「\n」に相当します。
全体の入出力ルールは次のとおりです:
cout << 变量名或数值
: 変数または値を出力するために使用されます。
cin >> 变量名
: コンソールから入力を受け取り、値を変数に保存するために使用されます。
デフォルトパラメータ
デフォルト パラメータも、C と比較して C++ に固有です。 缺省参数
は、関数を宣言または定義するときの関数パラメータのデフォルト値を指定します。この関数を呼び出すとき、実パラメータが指定されていない場合は仮パラメータのデフォルト値が使用され、それ以外の場合は指定された実パラメータが使用されます。
void Func(int a = 0)
{
cout << a << endl;
}
int main()
{
Func(); // 没有传参时,使用参数的默认值
Func(10); // 传参时,使用指定的实参
return 0;
}
準デフォルト
は、関数定義に複数のパラメーターがあり、一部のパラメーターはデフォルト設定されており、一部のパラメーターはデフォルト設定されていないことを意味します。
準デフォルト パラメータを使用する場合には、いくつかのルールがあります。
- 準デフォルトパラメータは右から左に順番に指定する必要があり、間隔をあけて指定することはできません。
- デフォルトパラメータは関数宣言と定義の両方に使用できません
準デフォルトのパラメータが右から左に与えられる場合、あいまいさはなくなります。たとえば、パラメータを渡すときに、右から左に始まる準デフォルトのパラメータがある場合、左端のデフォルト以外のパラメータが渡されたパラメータを確実に受け取るため、このような問題は発生しません。到底传给谁
。
関数の宣言と定義が分離されており、両方の場所にデフォルトのパラメータが存在する場合、2 つのパラメータの初期値は異なる可能性があります。したがって、C++ 文法では、デフォルト パラメーターは定義時に表示されず、宣言時にのみ指定されると規定されています。
関数のオーバーロード
関数のオーバーロードは C++ 構文で規定されています。2 つの関数名は同じであってもよく、戻り値が同じ場合、パラメーターは異なります。異なるパラメータには、異なるパラメータのタイプ、異なるパラメータの数、異なるパラメータの順序などが含まれます (関数のオーバーロードを実装するためのデフォルト パラメータの異なる使用により、あいまいさが生じる可能性があります)。
C++ での関数のオーバーロードの背後にある原理は、コンパイラーのリンク プロセス中に、パラメーターごとに定義される関数名の変更規則が異なるということです。