
C++チートシート:基本構文から応用まで完全ガイド
C++は、現代のソフトウェア開発において、依然として重要な役割を果たしている強力なプログラミング言語です。この記事では、C++の基本構文から、変数、データ型、条件分岐、ループ、配列、ベクトル、ポインタ、関数、文字列操作、そしてオブジェクト指向プログラミングの主要な概念(クラス、オブジェクト、ポリモーフィズム、継承)までを網羅したチートシートを提供します。C++の学習を始めたばかりの初心者から、知識を再確認したい中級者まで、あらゆるレベルのプログラマーにとって役立つでしょう。
はじめに:C++の世界へようこそ
C++は1983年にBjarne Stroustrupによって開発された高水準プログラミング言語です。システムのプログラミング、ゲーム開発、高性能アプリケーションなど、幅広い分野で使用されています。
最初のC++プログラム
まずは、最初のC++プログラムを見てみましょう。
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!";
return 0;
}
出力
Hello World!
このコードが何をしているのか理解できなくても心配ありません。基本的な構造から見ていきましょう。
C++の基本構文
C++のコードは、プリプロセッサディレクティブ、名前空間の宣言、そしてmain
関数で構成されています。
// ヘッダーファイル
#include <iostream>
// std名前空間には様々な標準ライブラリコンポーネントが含まれています
using namespace std;
// main関数はプログラム実行の開始点です
int main() {
// ここにコードを記述します
return 0;
}
コメント
コメントは、コードの説明を記述するために使用します。コンパイラはコメントを無視します。
- 一行コメント:
//
を使用します。 - 複数行コメント:
/*
で開始し、*/
で終了します。
// これはコメントです
/*
* これは複数行コメントです。
*/
C++の変数とデータ型
変数は、値を格納するための名前付きの場所です。C++には様々なデータ型があります。
変数の宣言
// 単一の変数を宣言する
data_type var_name;
// 複数の変数を宣言する
data_type var1_name, var2_name, var3_name;
データ型
- 整数型 (int): 整数を格納します。
- 文字型 (char): 文字を格納します。
- 浮動小数点型 (float): 単精度浮動小数点数を格納します。
- 倍精度浮動小数点型 (double): 倍精度浮動小数点数を格納します。
- ブール型 (bool): 真偽値(trueまたはfalse)を格納します。
- 文字列型 (string): 文字列を格納します。
string
を使用するには、#include <string>
が必要です。
int age = 30;
char initial = 'J';
float price = 99.99;
double pi = 3.14159265359;
bool is_active = true;
string name = "John Doe";
C++の入力と出力
iostream
ライブラリを使用して、ユーザーからの入力を受け取り、コンソールに出力することができます。
- 入力:
cin
を使用します。例:cin >> age;
- 出力:
cout
を使用します。例:cout << "Hello, " << name << endl;
改行
\n
文字またはendl
を使用して、新しい行を挿入することができます。
cout << "Hello World! \n";
cout << "Hello World!" << endl;
C++の条件分岐
条件文を使用すると、特定の条件に基づいてプログラムの流れを制御することができます。
if
文
if (condition) {
// conditionが真の場合に実行されるコード
}
if-else
文
if (condition) {
// conditionが真の場合に実行されるコード
} else {
// conditionが偽の場合に実行されるコード
}
else if
文
if (condition1) {
// condition1が真の場合に実行されるコード
} else if (condition2) {
// condition1が偽で、condition2が真の場合に実行されるコード
} else {
// すべての条件が偽の場合に実行されるコード
}
三項演算子
(condition) ? expression1 : expression2;
switch
文
switch (expression) {
case value1:
// expressionがvalue1と一致する場合に実行されるコード
break;
case value2:
// expressionがvalue2と一致する場合に実行されるコード
break;
default:
// どのケースにも一致しない場合に実行されるコード
break;
}
C++のループ
ループを使用すると、特定の条件が満たされるまで、コードのブロックを繰り返し実行することができます。
for
ループ
for (initialization; test_expression; update_expression) {
// 繰り返されるコード
}
while
ループ
while (condition) {
// conditionが真である限り繰り返されるコード
update_condition;
}
do-while
ループ
do {
// 少なくとも一度は実行され、conditionが真である限り繰り返されるコード
} while (condition);
C++の配列とベクトル
配列とベクトルは、同じデータ型の要素を格納するために使用されます。
配列
dataType array_name[size];
多次元配列
data_type array_name[size1][size2]....[sizeN];
ベクトル
vector
を使用するには、#include <vector>
が必要です。
vector<dataType> vector_name;
ベクトルの一般的な関数
push_back()
:ベクトルの最後に要素を挿入します。pop_back()
:ベクトルの最後の要素を削除します。clear()
:ベクトルのすべての要素を削除します。empty()
:ベクトルが空かどうかを確認します。at(i)
:指定されたインデックスi
の要素にアクセスします。front()
:ベクトルの最初の要素にアクセスします。back()
:ベクトルの最後の要素にアクセスします。erase()
:指定された位置の要素を削除します。
C++の参照とポインタ
参照とポインタは、メモリ内のデータにアクセスするための強力なツールです。
参照
参照は、既存の変数に対する別名です。
int var = 12;
int& ref = var; // refはvarへの参照
ポインタ
ポインタは、別の変数のメモリアドレスを格納する変数です。
int i = 3;
int *ptr = &i; // ptrはiへのポインタ
C++の関数
関数は、特定のタスクを実行する再利用可能なコードのブロックです。関数は、プログラムのロジックを整理するために使用できます。
関数の宣言
return_type function_name(parameters);
関数の定義
return_type function_name(parameters) {
// 関数の本体
// 実行されるコード
// 戻り値(該当する場合)
}
C++の文字列操作関数
string
クラスには、文字列を操作するための多くの便利な関数が用意されています。#include <string>
を忘れずに含めてください。
length()
関数
文字列の長さを取得します。
string str = "GeeksforGeeks";
cout << "The length of the string is: " << str.length();
substr()
関数
文字列から部分文字列を抽出します。
string str = "GeeksforGeeks";
string sub = str.substr(1, 5); // インデックス1から始まる長さ5の部分文字列を抽出
cout << "Substring: " << sub;
append()
関数
文字列の末尾に別の文字列を追加します。
string str = "Geeksfor";
str.append("Geeks");
cout << "Appended string: " << str;
compare()
関数
2つの文字列を比較します。
string str1 = "Geeks";
string str2 = "for";
int result = str1.compare(str2);
cout << "Comparison result: " << result;
empty()
関数
文字列が空かどうかを確認します。
string str1 = "GeeksforGeeks";
string str2 = "";
if (str1.empty()) {
cout << "str1 is empty";
}
C++のオブジェクト指向プログラミング
C++はオブジェクト指向プログラミング(OOP)をサポートしています。OOPの主要な概念は、クラス、オブジェクト、ポリモーフィズム、継承です。
1. クラス
クラスは、オブジェクトのブループリントです。クラスは、データ(メンバ変数)とメソッド(メンバ関数)を定義します。
2. オブジェクト
オブジェクトは、クラスのインスタンスです。
3. ポリモーフィズム
ポリモーフィズムとは、同じ名前の関数が異なる方法で動作できる能力のことです。
- コンパイル時のポリモーフィズム: 演算子オーバーロード、関数オーバーロードで実現可能
- 実行時のポリモーフィズム: 関数オーバーライド、仮想関数で実現可能
4. 継承
あるクラス(親クラス)のプロパティを別のクラス(子クラス)に継承することを継承と言います。コードの再利用性を高めます。
- 単一継承: 派生クラスが単一の基底クラスのプロパティを継承する場合
- 多重継承: 派生クラスが複数の基底クラスのプロパティを継承する場合
- 多段継承: 派生クラスが別の派生クラスのプロパティを継承する場合
- 階層継承: 複数の派生クラスが単一の基底クラスから継承する場合
まとめ
このC++チートシートは、C++プログラミングの基本的な概念を理解するための出発点として役立つでしょう。このガイドを参考に、C++の学習を進め、より複雑なプログラムに挑戦してください。経験を積むことで、C++の奥深さを理解し、その強力な機能を最大限に活用できるようになるでしょう。