talosのプログラミング教室

はじめてのC++ ~クラス編~

スポンサーリンク

f:id:talosta:20200505143241p:plain


今回はC++クラスについて説明します。

このあたりから急に難しくなり、挫折する人も多いのでしっかり学びましょう。

オブジェクト指向についてまだ勉強していない人は、先にこちらを読んでみてください。

talosta.hatenablog.com

クラスの宣言

「myclass.h」というファイルを作り、以下のようなコードを書いてみてください。

class myclass {
    int age;

public:
    void set_age(int n);
    int get_age();
};

まず、

class myclass{ 
}

でクラス名を指定します。


次に

int age;

メンバ変数の宣言です。

アクセス指定子が書いていない場合はprivateです。

つまり、変数ageは他のクラスからは見えません。

アクセスの範囲を変えたい場合は

public:

のように書きます。

"public:"と書かれた場所以降のすべてのメンバは、他のクラスからアクセス可能になります。

void set_age(int n);
int get_age();

は関数のプロトタイプ宣言と呼ばれます。

戻り値 関数名(仮引数);

というように書きます。

ヘッダファイルの概要

C++ではクラスの定義やメンバ関数のプロトタイプ宣言、メンバ変数の宣言をヘッダファイルに書き、メンバ関数の定義はソースファイルに書くのが一般的です。

ヘッダファイルには「.h」拡張子を付けます。

また、対応するソースファイルと拡張子以前のファイル名を同じにします。

(ソースファイルがfile.cppならヘッダファイルはfile.hとする)

関数の定義

今のままでは関数の中身が定義されていません。

「myclass.cpp」ファイルに以下のコードを記述してください。

#include "myclass.h"

void myclass::set_age(int n) {
    age = n;
}

int myclass::get_age() {
    return age;
}

ヘッダファイルをインクルードするのを忘れないようにしましょう。

「::」はクラスの型名と関数名をリンクするためのスコープ解決演算子と呼ばれます。

main関数

main関数は一番最初に実行される関数です。

「main.cpp」というファイルに以下のコードを記述してください。

#include <iostream>
#include "myclass.h"

int main() {
    myclass yamada;

    yamada.set_age(20);

    int age = yamada.get_age();

    std::cout << age << "\n";
}

まず、

myclass yamada;

でmyclass型のyamadaオブジェクトを宣言します。


次に、メンバ関数を呼び出す際は、「オブジェクト名.関数名」で行います。

yamada.set_age(20);

int age = yamada.get_age();

上のコードはそれぞれメンバ関数を呼び出しています。


コンパイルは以下のように行います。

g++ main.cpp myclass.cpp -o main

実行すると「20」と表示されるはずです。

おわりに

今回はクラスについて説明しました。