C++は、プログラミングの世界で非常に強力で柔軟な言語として広く使用されています。C++は、システムプログラミング、ゲーム開発、アプリケーション開発、さらには高パフォーマンスが求められる分野で使用されることが多いです。本記事では、C++の基本から応用までの重要なポイントを紹介し、初心者から上級者までの学習をサポートする内容を提供します。
C++の特徴
C++は、1980年代にBjarne Stroustrupによって開発されました。C言語を基盤にして、オブジェクト指向プログラミング(OOP)の概念を取り入れた言語です。そのため、C++は効率的で強力な機能を提供し、他の多くのプログラミング言語の基礎となっています。

C++の特徴としては以下が挙げられます。
-
低レベルの操作が可能: C++はメモリの管理を手動で行うことができ、ハードウェアに近い操作が可能です。
-
オブジェクト指向プログラミング: クラスとオブジェクトを使ったプログラミングが可能で、コードの再利用性や保守性を向上させます。
-
豊富なライブラリ: 標準ライブラリ(STL: Standard Template Library)を使って効率的なデータ構造やアルゴリズムを実装できます。
-
高速性: C++はコンパイル言語であり、最適化を行うことで非常に高速なプログラムを作成できます。
C++の基本構文
1. 変数とデータ型
C++では、変数を定義する際にそのデータ型を指定します。基本的なデータ型としては、int
(整数)、double
(浮動小数点数)、char
(文字)、bool
(真偽値)などがあります。
cpp#include
int main() {
int age = 25; // 整数型
double height = 5.9; // 浮動小数点型
char grade = 'A'; // 文字型
bool isAdult = true; // 真偽値型
std::cout << "Age: " << age << "\n";
std::cout << "Height: " << height << "\n";
std::cout << "Grade: " << grade << "\n";
std::cout << "Is Adult: " << isAdult << "\n";
return 0;
}
2. 演算子
C++では、数値演算や論理演算を行うための演算子が豊富に用意されています。
-
算術演算子:
+
,-
,*
,/
,%
-
比較演算子:
==
,!=
,<
,>
,<=
,>=
-
論理演算子:
&&
,||
,!
-
代入演算子:
=
,+=
,-=
,*=
,/=
3. 制御構文
C++では、条件分岐やループ処理を行うための制御構文があります。
-
if文
cppif (age > 18) {
std::cout << "Adult\n";
} else {
std::cout << "Not an adult\n";
}
-
for文
cppfor (int i = 0; i < 5; ++i) {
std::cout << "Iteration " << i << "\n";
}
-
while文
cppint i = 0;
while (i < 5) {
std::cout << "Iteration " << i << "\n";
++i;
}
オブジェクト指向プログラミング(OOP)
C++の最大の特徴は、オブジェクト指向プログラミング(OOP)の概念をサポートしていることです。OOPでは、データ(属性)とそのデータを操作する関数(メソッド)をまとめて「クラス」として定義し、それをインスタンス化した「オブジェクト」を使ってプログラムを構築します。
1. クラスとオブジェクト
cpp#include
class Dog {
public:
std::string name;
int age;
void bark() {
std::cout << name << " says Woof!\n";
}
};
int main() {
Dog myDog; // オブジェクトの作成
myDog.name = "Rex"; // 属性の設定
myDog.age = 5;
myDog.bark(); // メソッドの呼び出し
return 0;
}
2. 継承
C++では、既存のクラスを基に新しいクラスを作成することができます。これを「継承」と言います。
cppclass Animal {
public:
void speak() {
std::cout << "Animal makes a sound\n";
}
};
class Dog : public Animal { // Animalクラスを継承
public:
void bark() {
std::cout << "Dog barks\n";
}
};
int main() {
Dog myDog;
myDog.speak(); // 親クラスのメソッド
myDog.bark(); // 子クラスのメソッド
return 0;
}
3. ポリモーフィズム(多態性)
C++では、同じメソッド名で異なる動作を実現する「オーバーロード」や、基底クラスのメソッドを派生クラスで再定義する「オーバーライド」が可能です。
cppclass Shape {
public:
virtual void draw() {
std::cout << "Drawing a shape\n";
}
};
class Circle : public Shape {
public:
void draw() override { // 親クラスのメソッドをオーバーライド
std::cout << "Drawing a circle\n";
}
};
int main() {
Shape* shape = new Circle();
shape->draw(); // Circleのdraw()が呼ばれる
delete shape;
return 0;
}
メモリ管理
C++では、動的メモリの割り当てと解放を手動で管理する必要があります。これにはnew
演算子とdelete
演算子を使用します。
cppint* ptr = new int(10); // メモリの動的割り当て
std::cout << *ptr << "\n"; // メモリに格納された値を表示
delete ptr; // メモリの解放
C++の標準ライブラリ(STL)
C++には、標準ライブラリ(STL)として、データ構造やアルゴリズムを効率的に使用するためのライブラリが提供されています。よく使用されるものに、vector
, map
, set
, queue
などがあります。
cpp#include
#include
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
for (int val : vec) {
std::cout << val << " ";
}
std::cout << "\n";
return 0;
}
まとめ
C++は非常に強力で柔軟なプログラミング言語であり、システムプログラミングやゲーム開発など、さまざまな分野で利用されています。基本的な構文を理解した後は、オブジェクト指向の概念を学ぶことで、より高度なプログラムを作成できるようになります。また、標準ライブラリやメモリ管理などの機能を駆使することで、効率的かつ高性能なアプリケーションを作成することが可能です。