目次
1.C++
1.1 C++ とは
C++ (C plus plus) は、C 言語の拡張およびアップグレードである高水準コンピュータ プログラミング言語です。 によって 1979 年に初めて開発されました。 >Bjarne Stroustrup(Bjarne Stroustrup -- C++ 言語の父 a> は AT&T Bell Studios で開発されました。 )
C 言語は構造化されたモジュール型言語であり、小規模なプログラムの処理に適しています。高度な抽象化とモデリングを必要とする複雑な問題や大規模なプログラムには、C 言語は適していません。ソフトウェア危機を解決するために、1980 年代にコンピュータ業界はOOP(オブジェクト指向プログラミング: オブジェクト指向)<という考え方を提案しました。 /span> というオブジェクト指向プログラミング言語をサポートする言語が登場しました。
1982 年、Bjarne Stroustrup 博士は、C 言語に基づくオブジェクト指向の概念を導入および拡張し、新しいプログラミング言語を発明しました。 C言語との起源関係を表現するためにC++と名付けられました。したがって: C++ は C 言語に基づいており、C 言語 (C 言語と互換性のある) で手続き型プログラミングを実行できるだけでなく、 および オブジェクトも実行できます。抽象データ型を特徴とするベースのプログラミングオブジェクト指向プログラミング。
1.2 C++の開発の歴史
1979 年、ベル研究所のベンジャニらは Unix カーネルを分析しようとしたとき、カーネルをモジュール化しようとしたため、 カーネルを C 言語に基づいて拡張し、追加したものを追加しました。 クラスの仕組みが完成し、実行可能な前処理プログラムが完成しました。これは、 C と呼ばれます。クラスC とクラス a>。
2. C++ の概要
2.1 C++ キーワード
C++ (C++98) には合計 63 個のキーワードがありますが、C 言語には 32 個のキーワードがあります。どのようなキーワードがあるのか見てみましょう。
2.2 名前空間
C/C++ には多数の変数、関数、クラスがあり、これらの変数、関数、クラスの名前はグローバル スコープ内に存在するため、多くの競合が発生する可能性があります。名前空間を使用する目的は、名前の競合や名前汚染を避けるために識別子の名前をローカライズすることです。名前空間キーワードはこの目的のために表示されます。
#include <iostream>
//这一行是什么意思呢?
using namespace std;
私と同じように、最初はこの仕事の意味など気にも留めなかった初心者も多いと思いますので、一緒に学んでいきましょう!
//这一行是什么意思呢?
//using namespace std;
//解读时刻:
//其中,namespace--命名空间
// using namespace--全部展开(授权)命名空间
// std--C++标准库的命名空间
//即:全部展开(授权)命名空间中的std
名前空間の用途は何ですか? C 言語の名前の競合の問題が解決できることは明らかですが、C 言語の解決策は 1 つだけです - 名前を変更することです。 ! ! C++ の名前空間は、名前の競合の問題を効果的に解決します。次に例を示します。
#include <iostream>
using namespace std;
//命名冲突
namespace fyd
{
//命名空间中可以定义变量/函数/类型
int pow = 1;
}
int main()
{
// ::--域作用限定符
cout << fyd::pow << endl;
int a = 1, b = 2;
cout << pow(b, a) << endl;
return 0;
}
出力結果:
明らかに、名前空間は名前の競合の問題を解決します。同時に、名前空間を使用する方法は 1 つだけではなく、3 つあります。
·名前空間名とドメイン修飾子の追加
int main()
{
// ::--域作用限定符
cout << fyd::pow << endl;
return 0;
}
·名前空間のメンバーを導入するには、using を使用します。
using fyd::a;
int main()
{
cout << a << endl;
return 0;
}
・名前空間を使用して使用する 名前空間名の紹介
using namespace fyd;
int main()
{
cout << fyd::a << endl;
cout << a << endl;
return 0;
}
2.3 C++ の入出力
名前空間で使用する cin、cout、endl などの新しい顔は何ですか?明らかに、C++ はこれを使用して世界と通信します。一緒に学びましょう!
// std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间
#include <iostream>
using namespace std;
int main()
{
int a = 1;
int b = 0;
cin >> b;
cout << a << endl;
//cin -- Console in
//cout -- Console out
// >> -- 流提取运算符
// << -- 流插入运算符
// endl -- 换行也可用‘\n’效果一致
return 0;
}
例証します:
・cout 標準出力オブジェクト (コンソール) および cin 標準入力オブジェクト (キーボード) を使用する場合、<iostream>ヘッダー ファイルを含める必要があり、名前空間の使用法に従って std を使用します。
·cout と cin はグローバル ストリーム オブジェクトで、endl は改行出力を表す特別な C++ シンボルで、両方とも <iostream> ヘッダー ファイルに含まれています。
· はストリーム挿入演算子、>> はストリーム抽出演算子です。
・入出力にはC++を使用すると便利で、printf/scanfの入出力のように形式を手動で制御する必要がありません。 C++ の入出力は変数の型を自動的に識別できます。
#include <iostream>
using namespace std;
int main()
{
double x = 1.111;
double y = 0;
int a = 1;
int b = 0;
//可自动识别变量类型
cin >> b >> y;
cout << a << x << endl;
return 0;
}
2.4 デフォルトパラメータ
2.4.1 デフォルトパラメータの概念
デフォルト パラメータは次のとおりです。関数を宣言または定義するときに、関数のパラメータのデフォルト値を指定します。 。この関数を呼び出すとき、実パラメータが指定されていない場合は仮パラメータのデフォルト値が使用され、それ以外の場合は指定された実パラメータが使用されます。
#include <iostream>
using namespace std;
void fyd(double a = 3.1415926)
{
cout << a << endl;
}
int main()
{
//没有传参时,使用参数默认值
fyd();
//传参时,使用指定实参
fyd(3.14);
return 0;
}
操作結果:
2.4.2 デフォルトパラメータの分類
·すべてのデフォルトパラメータ
#include <iostream>
using namespace std;
void fyd(double a = 3.1415926, int b = 9, int c = 1)
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
}
int main()
{
fyd();
return 0;
}
操作結果:
・セミデフォルトパラメータ
#include <iostream>
using namespace std;
void fyd(double a, int b = 9, int c = 1)
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
}
int main()
{
fyd(1.11);
return 0;
}
操作結果:
知らせ:
· セミデフォルト パラメータは右から左の順序で指定する必要があり、間隔をあけて指定することはできません。
·デフォルトパラメータは関数宣言と定義の両方に使用できません。
·デフォルト値は定数またはグローバル変数である必要があります
・C言語はサポートしておりません(コンパイラがサポートしていません)
2.5 関数のオーバーロード
2.5.1 関数のオーバーロードの概念
2.5.2 関数のオーバーロードの分類
1. さまざまなパラメータの種類
#include <iostream>
using namespace std;
int fyd(int a, int b)
{
return a + b;
}
double fyd(double a, double b)
{
return a + b;
}
int main()
{
int i = 2;
int j = 3;
double k = 2.22;
double l = 3.33;
cout << fyd(i, j) << endl;
cout << fyd(k, l) << endl;
return 0;
}
2. パラメータの数が異なります
#include <iostream>
using namespace std;
int fyd(int a, int b)
{
return a + b;
}
int fyd(int a = 999)
{
return a;
}
int main()
{
int i = 2;
int j = 3;
cout << fyd(i, j) << endl;
cout << fyd() << endl;
return 0;
}
操作結果:
3. パラメータの型の順序が異なる
#include <iostream>
using namespace std;
void fyd(int a, double b)
{
cout << a + b << endl;
}
void fyd(double a, int b)
{
cout << a + b << endl;
}
int main()
{
fyd(2, 1.11);
fyd(1.11, 2);
return 0;
}
操作結果:
3. まとめ
これまでは競技会の都合上、C++の使い方だけは知っていましたが、その概念や核心部分までは分かっていなかったので、これからは改めてC++を地に足のついた形で勉強しようと思いました。皆さんも一緒に学んでいただければ幸いです!