C++/クイックツアー
C++は高性能なプログラムを作成するために広く使われている強力なプログラミング言語です。本章「クイックツアー」では、C++の基本概念と構文を短時間で理解できるように、必要最低限の情報を効率的に提供します。初心者がC++の魅力を体験し、次のステップへ進むための基礎を築くことを目的としています。プログラムの基本構造、データ型、制御構造、関数、クラスなど、主要なトピックを具体例と共にわかりやすく説明します。C++の世界への第一歩を踏み出しましょう。
C++の基本構造
編集プログラムの基本構造
編集C++プログラムは、必ずmain
関数から始まります。
この関数はプログラムのエントリーポイントであり、main
関数が終了するとプログラムの実行も終了します。
#include <iostream> auto main() -> int { std::cout << "Hello, World!" << std::endl; return 0; }
この例では、#include <iostream>
が標準入出力ライブラリをインクルードし、std::cout
でコンソールにメッセージを表示します。
コメント
編集コメントはコード内に説明やメモを追加するために使います。コンパイラはコメントを無視します。
// これはシングルラインコメントです /* これは マルチラインコメントです */
基本的なデータ型と変数
編集データ型
編集C++にはさまざまなデータ型があります。ここでは基本的なものを紹介します。
int i{10}; // 整数型 float f{3.14}; // 浮動小数点型 char c{'A'}; // 文字型 bool b{true}; // ブール型
変数の宣言と初期化
編集変数を使う前には必ず宣言する必要があります。宣言時に初期化も行えます。
int a; // 宣言 a = 5; // 代入 int b{10}; // 宣言と初期化
演算子
編集算術演算子
編集算術演算子は基本的な数学的操作を行います。
int sum = 5 + 3; // 足し算 int difference = 5 - 3; // 引き算 int product = 5 * 3; // 掛け算 int quotient = 5 / 3; // 割り算 int remainder = 5 % 3; // 剰余
複合代入演算子
編集複合代入演算子は演算と代入を同時に行います。
int a{10}; a += 5; // a は 15 になる a -= 3; // a は 12 になる
インクリメントとデクリメント
編集インクリメントとデクリメントは変数の値を1ずつ増減します。
int a{5}; a++; // a は 6 になる a--; // a は 5 に戻る
制御構造
編集条件分岐
編集条件分岐は、条件に応じて異なるコードを実行します。
int a{10}; if (a > 5) { std::cout << "a は 5 より大きい" << std::endl; } else if (a == 5) { std::cout << "a は 5" << std::endl; } else { std::cout << "a は 5 より小さい" << std::endl; }
ループ
編集ループは同じコードを繰り返し実行します。
for (int i = 0; i < 5; i++) { std::cout << i << std::endl; } int j{0}; while (j < 5) { std::cout << j << std::endl; j++; } int k{0}; do { std::cout << k << std::endl; k++; } while (k < 5); int ary = {2, 3, 5, 7, 11}; for (auto n : ary) { std::cout << n << std::endl; }
配列と文字列
編集配列
編集配列は同じデータ型の複数の値を格納するためのデータ構造です。
int arr[3] = {1, 2, 3}; std::cout << arr[0] << std::endl; // 1 std::cout << arr[1] << std::endl; // 2 std::cout << arr[2] << std::endl; // 3
文字列
編集文字列は文字の配列です。C++ではCスタイル文字列とstd::string
が使用されます。
char cstr[] = "Hello"; std::cout << cstr << std::endl; #include <string> std::string str{"World"}; std::cout << str << std::endl;
関数
編集関数の宣言と定義
編集関数は特定のタスクを実行するコードのブロックです。
auto add(int a, int b) -> int { return a + b; } auto main() -> int { int result = add(3, 4); std::cout << "3 + 4 = " << result << std::endl; return 0; }
オーバーロード
編集関数のオーバーロードは、同じ名前の関数を異なる引数リストで定義することです。
auto add(int a, int b) -> int { return a + b; } auto add(double a, double b) -> double { return a + b; } auto main() -> int { std::cout << "int: " << add(3, 4) << std::endl; // 7 std::cout << "double: " << add(3.0, 4.0) << std::endl; // 7.0 return 0; }
ポインターと参照
編集ポインター
編集ポインターは変数のメモリアドレスを格納する変数です。
int a{10}; int* p = &a; std::cout << "a の値: " << a << std::endl; std::cout << "a のアドレス: " << p << std::endl; std::cout << "p が指す値: " << *p << std::endl;
参照
編集参照は既存の変数への別名を作成します。
int a{10}; int& ref = a; std::cout << "a の値: " << a << std::endl; std::cout << "ref の値: " << ref << std::endl; ref = 20; std::cout << "a の新しい値: " << a << std::endl;
クラスとオブジェクト指向
編集クラスの基本
編集クラスはデータとそれに関連する関数をまとめたデータ構造です。
class Person { public: std::string name; int age; auto introduce() -> void { std::cout << "名前: " << name << ", 年齢: " << age << std::endl; } }; auto main() -> int { Person person{"太郎", 30}; person.introduce(); return 0; }
コンストラクタとデストラクタ
編集コンストラクタはオブジェクトの初期化を行い、デストラクタはオブジェクトの終了時にリソースを解放します。
class Person { public: std::string name; int age; Person(std::string n, int a) : name(n), age(a) { std::cout << "コンストラクタ呼び出し: " << name << std::endl; } ~Person() { std::cout << "デストラクタ呼び出し: " << name << std::endl; } auto introduce() -> void { std::cout << "名前: " << name << ", 年齢: " << age << std::endl; } }; auto main() -> int { Person person("太郎", 30); person.introduce(); return 0; }
標準ライブラリの活用
編集ベクター
編集std::vector
は動的配列を実現する標準ライブラリのコンテナです。
#include <vector> #include <iostream> auto main() -> int { std::vector<int> vec = {1, 2, 3, 4, 5}; vec.push_back(6); for (int n : vec) { std::cout << n << std::endl; } return 0; }
スマートポインター
編集スマートポインターはメモリ管理を自動化します。std::unique_ptr
とstd::shared_ptr
がよく使われます。
#include <memory> #include <iostream> auto useUniquePtr() -> void { std::unique_ptr<int> p = std::make_unique<int>(10); std::cout << "unique_ptr の値: " << *p << std::endl; } auto useSharedPtr() -> void{ std::shared_ptr<int> p1 = std::make_shared<int>(20); std::shared_ptr<int> p2 = p1; std::cout << "shared_ptr の値: " << *p1 << ", 参照カウント: " << p1.use_count() << std::endl; } auto main() -> int { useUniquePtr(); useSharedPtr(); return 0; }
総括と次のステップ
編集クイックツアーのまとめ
編集この章では、C++の基本的な構造や概念についての簡単な紹介を行いました。基本構造、データ型、制御構造、関数、クラス、標準ライブラリの使い方など、プログラムを書く上で重要な要素を学びました。
次のステップ
編集このクイックツアーで学んだ知識を基に、さらに詳細なC++の学習を進めましょう。次のステップとして、C++の標準ライブラリの深掘り、オブジェクト指向プログラミングの概念、テンプレートや例外処理などの高度なトピックを学ぶことで、より強力なプログラマーになれます。