C++言語の基本知識をゼロから学ぶハンズオン学習

C++言語は、C言語の上位言語です。
C言語との互換性があり、オブジェクト指向の特徴があります。
ここでは、C++言語としての部分を紹介するため、演算子等は省略します。
演算子等を学びたい場合は、 C言語の基本知識をゼロから学ぶハンズオン学習 をご確認ください。

C++言語でHelloWorldを表示してみよう

1. HelloWorldを表示してみよう

1. HelloWorldを表示してみよう

C++言語は、C言語の機能を拡張したものなので、C言語と同じくprintf()関数を用いることができます。
今回は、C++独自の表現方法で記述していきます。

1-1. プロジェクトの作成

① メニューバーの「ファイル」から「新規」→「プロジェクト」を選択します。

② 「C/C++」から「C++プロジェクト」を選択し、「次へ」をクリックします。

③ 以下を入力、選択し、「完了」をクリックします。

  • プロジェクト名(ここではHelloWorldとしています)
  • プロジェクト・タイプを「実行可能」→「空のプロジェクト」に選択
  • ツールチェーンを「MacOSX GCC」に選択

プロジェクトが出来上がりました。

④ 出来上がったプロジェクトを右クリックして「新規」→「ソース・フォルダー」を選択します。

⑤ フォルダー名を入力し(ここではsrcとしています)「完了」をクリックします。

⑥ プロジェクト内に出来たフォルダを右クリックし、「新規」→「ソース・ファイル」を選択します。

⑦ 「ソース・ファイル」を入力し、「完了」をクリックします。
なお、C++の拡張子は、「.cpp」とする必要があります。
※ここではHelloWorld.cppとしています。

1-2. コーディング

① ファイルが作成されました。デフォルトでコメントが表示されるので、不要であれば削除してください。

② 以下のコードを記述します。

#include <iostream>
 
using namespace std;
 
int main(){
    cout << "HelloWorld." << endl;
    return 0;
}

③ メニューバーの「プロジェクト」から「すべてビルド」を選択しビルドします。

ビルドが成功したら下部コンソールに完了メッセージが出てきます。
コードに間違いがある場合は、エラーメッセージが出てきます。

④ メニューバーの「実行」から「実行」を選択し、実行します。

⑤ 実行結果が下部コンソールに出力されます。

2. コードの理解

以下のコードを解説していきます。

#include <iostream>

using namespace std;

int main(){
    cout << "HelloWorld." << endl;
    return 0;
}
#include <iostream>

C言語においてstdio.h は「標準入力・出力」ライブラリを含むヘッダーファイルで、このファイルには、コンソールに文字列を表示する printf や、ユーザーから入力を受け取る scanf などの関数が定義されていました。
C++では、ヘッダを読み込むことにより、クラスを利用できるようになります。

using namespace std;

C++言語から用いられるようになった概念で、指定された名前の名前空間を使うことを意味しています。
名前空間であるstdを指定することで、coutが利用できるようになります。

cout

coutは、printf()関数と同じような働きがあります。

<< "HelloWorld." <<

入出力ストリームでは、>>および、<<を用いることにより、ストリームと呼ばれる対象に対するデータのやりとりを行います。

endl

endlは改行を表します。C言語で用いた¥nも利用可能ですが、C++で、coutを用いる場合は、こちらが一般的です。

クラス

1. クラスとは
2. クラスの定義
3. メンバ変数・メンバ関数

1. クラスとは

C言語の構造体とよく似ていますが、クラスは、構造体の中に、さらに関数まで加えたものです。
※構造体は、複数の変数を1つにまとめたもの

2. クラスの定義

クラスを定義するには、classを付与しクラスを宣言します。

class クラス名 {
    // メンバ変数やメンバ関数などの処理
};

3. メンバ変数・メンバ関数

クラスの構成要素は、メンバと呼ばれ、メンバ変数やメンバ関数があります。

class クラス名 {
    private:
        データ型 メンバ変数名;
    public: 
        データ型 メンバ関数名();
}

アクセス修飾子

1. アクセス修飾子

1. アクセス修飾子

メンバ変数やメンバ関数の前にアクセス修飾子を付与できます。

アクセス修e飾子概要
publicすべてのファイルからアクセス可能
protected同一クラスまたは同一インスタンスおよび、サブクラスおよびそのインスタンス内でのみアクセス可能
private同一クラスまたは同一インスタンス内でのみアクセス可能
class クラス名 {
    private:
        データ型 メンバ変数名;
    public: 
        データ型 メンバ関数名();
}

インスタンス化

1. インスタンス化
2. メンバ変数とメンバ関数の呼び出し
3. コンストラクタとデストラクタ

1. インスタンス化

クラスのインスタンスを生成することをインスタンス化と言います。
インスタンス化を行うには以下のようにします。

インスタンス化を行うクラス名 インスタンス名;

2. メンバ変数とメンバ関数の呼び出し

インスタンス名を使用して、メンバ変数やメンバ関数の呼び出しを行うには、「. 」を使用します。

インスタンス名.メンバ変数(メンバ関数も同様)

3. コンストラクタとデストラクタ

3-1. コンストラクタ

コンストラクタとは、そのクラスをインスタンス化したときに、自動的に呼び出されるメンバ関数です。
コンストラクタ名は、クラス名と同じにする必要があり、また、戻り値がないのも特徴です。

3-1-1. コンストラクタの定義

以下のようにコンストラクタを定義します。
インスタンス化を行うクラス

インスタンス化を行うクラス名() {
    // 処理
}
3-1-2. コンストラクタの呼び出し

以下のようにコンストラクタを呼び出します。

インスタンス化を行うクラス名 インスタンス名;
3-1-3. コンストラクタに引数を渡す

コンストラクタには引数を渡すことができます。
以下のように定義できます。なお、引数の数は合わせる必要があります。
例文_コンストラクタの定義

インスタンス化を行うクラス名(引数1, 引数2) {
    // 処理
}

例文_コンストラクタの呼び出し

インスタンス化を行うクラス名 インスタンス名(引数1, 引数2);

3-2. デストラクタ

デストラクタとは、クラスのインスタンスが解放されるときに、 解放の直前で自動的に呼び出されます。
デストラクタの名前は、クラス名の先頭に ~ を付けたものです。

3-2-1. デストラクタの定義

以下のようにデストラクタを定義します。
インスタンス化を行うクラス

〜インスタンス化を行うクラス名() {
    // 処理
}
3-2-2. デストラクタの呼び出し

デストラクタを呼び出しは、インスタンス化されたスコープが終了すると自動的にデストラクタが呼ばれます。

3-3. コンストラクタとデストラクタをコントロール

インスタンスを生成することは、メモリを消費します。そのため、インスタンスの生成と消去のタイミングをコントロールすることができます。

3-3-1. インスタンスの生成をコントロール

インスタンスの生成をコントロールするには、new演算子を使用します。
new演算子は、コンストラクタを呼び出し、インスタンスを生成します。

new コンストラクタ名();

3-3-2. インスタンスの消去をコントロール

インスタンスの消去をコントロールするには、delete演算子を使用します。
delete演算子は、デストラクタが実行され、インスタンスを消去します。

delete インスタンス名

静的メンバ

1. 静的メンバとは
2. 静的メンバ変数
3. 静的メンバ関数

1. 静的メンバとは

2. 静的メンバ変数

3. 静的メンバ関数