C++:クラスの概要(1)> コンストラクタ関数とデストラクタ関数について

C++において重要なクラスについてのメモ。

更新履歴

  • [2013.07.18] MacOS X ターミナルでのコンパイルのコマンドを追加しました。
  • [2013.07.17] コードの誤りを修正し、インデントのルールを変更しました。
  • [2013.07.16] アクセス指定子と範囲についての説明を追加しました。

C++のクラスについて

コンストラクタ関数とデストラクタ関数

クラスにはインスタンス生成時に1度だけ実行されるコンストラクタと、インスタンスが削除されるときに実行されるデストラクタが定義できる。

クラス・インターフェースのアクセス指定子と範囲

アクセス指定子説明
なしクラス内から使用可能(privateと同じ)
public外部のクラスから使用可能
privateクラス内から使用可能
protectedprivateと同じ(サブクラスからはpublicになる)
SampleClass.h
class SampleClass {
public:
    SampleClass(int n); // コンストラクタ
    ~SampleClass();     // デストラクタ
    void print();

protected:
    int num;
};

補足説明

  • コンストラクタはクラス名と同名。引数を取ることは可能だが戻り値はない。
  • デストラクタはクラス名の前に「~」を付ける。引数も戻り値もない。
  • クラス定義の最後は ;(セミコロン)で終わる。
SampleClass.cpp
#include "SampleClass.h"
#include <iostream>
using namespace std;

// コンストラクタ
SampleClass::SampleClass(int n)
{
    cout << "コンストラクタ" << n;
    num = n;
}

// デストラクタ
SampleClass::~SampleClass()
{
    cout << "デストラクタ" << num;
}

void SampleClass::print()
{
    cout << "print" << num;
}
[/code]</dd>
</dl>

<h3>補足説明</h3>
<ul>
<li>メンバ関数は 戻り値 クラス名::関数名 と記述し実装する。(::はスコープ演算子)</li>
</ul>

<dl>
<dt>main.cpp</dt>
<dd>[code]
#include "SampleClass.h"

int main()
{
    SampleClass  sample(1);
    sample.print(); // 1と表示される

    SampleClass *pOut = new SampleClass(10); //newでSampleClassインスタンスを生成
    pOut->print();  // 10と表示される
    delete pOut;    // インスタンスを解放
}

補足説明

  • newでインスタンスを生成した場合は、必ずdelete演算子で開放する。
  • オブジェクトからクラスメンバにアクセスする場合にはドット演算子を使う。
  • ポインタからクラスメンバにアクセスする場合にはアロー演算子を使う。

コンパイル(MacOS X Terminal)

g++ -o SampleClass main.cpp SampleClass.cpp
結果
コンストラクタ1
print1
コンストラクタ10
print10
デストラクタ10
デストラクタ1

まとめ

変数とポインタ変数についてもこの際しっかり理解しておく必要がありますね。

siro:chro 無料ゲーム SQN をリリースしました

img_sqn_00

sirochro 初の無料ゲームアプリ SQN をリリースしました。
記事:SQN: iOS 無料ゲームアプリ SQN - Sequential Numbers をリリース
ちょっとした時間に楽しめる完全無料のゲームなっていますので、是非ダウンロードして遊んでみてください。

↓SQN のダウンロードはこちらから

Related Contents

Pickup Contents