
C++ チートシート:基本構文、データ型、制御構造からオブジェクト指向まで
C++は、汎用性が高く強力なプログラミング言語であり、システムソフトウェアからゲーム開発まで、幅広いアプリケーションで使用されています。このチートシートは、C++の基本概念を理解し、効率的にコードを書くための入門ガイドとなるように設計されています。
C++の学習や復習に役立ててください。
C++プログラムの基本構造
C++プログラムは、特定の構文と構造に従って書かれています。以下に、基本的なC++プログラムの構造を示します。
// ヘッダーファイルのインクルード
#include <iostream>
// 名前空間の指定
using namespace std;
// メイン関数
int main() {
// コード
cout << "Hello, World!" << endl;
return 0;
}
- ヘッダーファイル:
#include <iostream>
は、入出力ストリームを扱うためのヘッダーファイルをインクルードします。 - 名前空間:
using namespace std;
は、標準名前空間を使用することを宣言します。 - main関数:
int main() { ... }
は、プログラムの実行を開始する関数です。
コメント
コードの説明を記述するためにコメントを使用します。コメントはコンパイラによって無視されます。
1行コメント
//
を使用して1行コメントを記述します。
// これは1行コメントです
cout << "Hello"; // Helloと出力します
複数行コメント
/*
と */
を使用して複数行コメントを記述します。
/*
これは複数行コメントです。
複数の行にわたって説明を記述できます。
*/
cout << "Hello";
変数とデータ型
変数は、値を格納するための名前付きの場所です。C++では、変数を宣言する際にデータ型を指定する必要があります。
変数の宣言
データ型 変数名;
基本的なデータ型
- int: 整数を格納します(例:10, -5, 0)。
- char: 1文字を格納します(例:'a', 'Z', '9')。
- float: 単精度浮動小数点数を格納します(例:3.14, -2.5)。
- double: 倍精度浮動小数点数を格納します(例:3.14159265359)。
- bool: 真偽値(trueまたはfalse)を格納します。
- string: 文字列を格納します(例: "Hello, World!")。
#include <string>
が必要です。
変数の初期化の例
int age = 25;
char initial = 'J';
float price = 19.99;
double pi = 3.14159;
bool isStudent = true;
string name = "John Doe";
入力と出力
iostream
ライブラリを使用して、標準入力(キーボード)からデータを読み取り、標準出力(コンソール)にデータを書き込むことができます。
入力
int age;
cout << "年齢を入力してください: ";
cin >> age;
出力
cout << "あなたの年齢は" << age << "歳です。" << endl;
cout
:コンソールに出力します。cin
:キーボードから入力を読み取ります。<<
:出力演算子。>>
:入力演算子。endl
:改行を出力します。
制御構造
制御構造を使用すると、プログラムの実行フローを制御できます。
条件文
if文
条件が真の場合にコードブロックを実行します。
int age = 20;
if (age >= 18) {
cout << "成人です。" << endl;
}
if-else文
条件が真の場合と偽の場合に異なるコードブロックを実行します。
int age = 16;
if (age >= 18) {
cout << "成人です。" << endl;
} else {
cout << "未成年です。" << endl;
}
if-else if-else文
複数の条件を順番にチェックします。
int score = 85;
if (score >= 90) {
cout << "評価: A" << endl;
} else if (score >= 80) {
cout << "評価: B" << endl;
} else if (score >= 70) {
cout << "評価: C" << endl;
} else {
cout << "評価: D" << endl;
}
switch文
変数の値を複数のケースと比較します。
int day = 3;
switch (day) {
case 1:
cout << "月曜日" << endl;
break;
case 2:
cout << "火曜日" << endl;
break;
case 3:
cout << "水曜日" << endl;
break;
default:
cout << "その他の曜日" << endl;
}
break
:switch文から抜け出します。default
:どのケースにも一致しない場合に実行されるコードブロック。
ループ
forループ
指定された回数だけコードブロックを繰り返します。
for (int i = 0; i < 5; i++) {
cout << "i = " << i << endl;
}
whileループ
条件が真である間、コードブロックを繰り返します。
int i = 0;
while (i < 5) {
cout << "i = " << i << endl;
i++;
}
do-whileループ
コードブロックを少なくとも1回実行し、条件が真である間、繰り返し実行します。
int i = 0;
do {
cout << "i = " << i << endl;
i++;
} while (i < 5);
配列
配列は、同じデータ型の要素を連続して格納するデータ構造です。
1次元配列の宣言
データ型 配列名[要素数];
配列の初期化
int numbers[5] = {1, 2, 3, 4, 5};
配列の要素へのアクセス
cout << numbers[0] << endl; // 最初の要素にアクセス
numbers[2] = 10; // 3番目の要素の値を変更
多次元配列の宣言
データ型 配列名[行数][列数];
2次元配列の初期化
int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};
2次元配列の要素へのアクセス
cout << matrix[0][1] << endl; // 最初の行の2番目の要素にアクセス
ベクター
ベクターは、動的にサイズを変更できる配列のようなデータ構造です。#include <vector>
が必要です。
ベクターの宣言
vector<データ型> ベクター名;
要素の追加
push_back()
を使用してベクターの最後に要素を追加します。
vector<int> numbers;
numbers.push_back(10);
numbers.push_back(20);
numbers.push_back(30);
要素へのアクセス
at()
を使用して特定のインデックスの要素にアクセスします。
cout << numbers.at(0) << endl; // 最初の要素にアクセス
ベクターのサイズ
size()
を使用してベクター内の要素の数を取得します。
cout << numbers.size() << endl; // ベクターのサイズを出力
ポインタ
ポインタは、別の変数のメモリアドレスを格納する変数です。
ポインタの宣言
データ型 *ポインタ名;
アドレスの取得
&
演算子を使用して変数のアドレスを取得します。
int age = 25;
int *agePtr = &age; // ageのアドレスをagePtrに格納
値の取得
*
演算子を使用してポインタが指すアドレスの値を間接参照します。
cout << *agePtr << endl; // agePtrが指すアドレスの値を表示
関数
関数は、特定のタスクを実行するコードの再利用可能なブロックです。
関数の宣言
戻り値の型 関数名(引数の型 引数名, ...);
関数の定義
戻り値の型 関数名(引数の型 引数名, ...) {
// コード
return 戻り値;
}
関数の呼び出し
int add(int a, int b) {
return a + b;
}
int result = add(5, 3); // add関数を呼び出し、結果を変数resultに格納
cout << result << endl; // 結果を表示
文字列操作
string
クラスを使用して文字列を操作できます。
文字列の長さ
length()
を使用して文字列の長さを取得します。
string message = "Hello, World!";
cout << message.length() << endl; // 文字列の長さを表示
部分文字列の取得
substr()
を使用して文字列から部分文字列を抽出します。
string message = "Hello, World!";
string sub = message.substr(0, 5); // インデックス0から5文字の部分文字列を抽出
cout << sub << endl; // "Hello"と表示
文字列の連結
append()
を使用して文字列を連結します。または +
演算子を使用できます。
string str1 = "Hello";
string str2 = "World";
string result = str1 + ", " + str2 + "!";
cout << result << endl; // "Hello, World!"と表示
str1.append(", ");
str1.append(str2);
cout << str1 << endl; // Hello, Worldと表示
オブジェクト指向プログラミング (OOP)
C++はオブジェクト指向プログラミングをサポートしています。主要な概念は次のとおりです。
クラス
クラスは、オブジェクトのブループリントです。
class Dog {
public:
string name;
int age;
void bark() {
cout << "Woof!" << endl;
}
};
オブジェクト
オブジェクトは、クラスのインスタンスです。
Dog myDog;
myDog.name = "Buddy";
myDog.age = 3;
myDog.bark(); // "Woof!"と表示
継承
継承により、新しいクラスが既存のクラスからプロパティとメソッドを継承できます。
class Bulldog : public Dog {
public:
void guard() {
cout << "Guarding!" << endl;
}
};
Bulldog myBulldog;
myBulldog.name = "Spike";
myBulldog.age = 5;
myBulldog.bark(); // "Woof!"と表示
myBulldog.guard(); // "Guarding!"と表示
ポリモーフィズム
ポリモーフィズムにより、異なるクラスのオブジェクトを同じ方法で扱うことができます。
class Animal {
public:
virtual void makeSound() {
cout << "Generic animal sound" << endl;
}
};
class Cat : public Animal {
public:
void makeSound() override {
cout << "Meow!" << endl;
}
};
Animal* animal1 = new Animal();
Animal* animal2 = new Cat();
animal1->makeSound(); // "Generic animal sound"と表示
animal2->makeSound(); // "Meow!"と表示
上記のチートシートは、C++プログラミングの基本的な概念をまとめたものです。この情報が、C++の学習とコーディングの効率化に役立つことを願っています。