クラス
クラスを定義してみます。
- クラス
- 「class <クラス名>{ .. };」の形式で書きます。
- 末尾に";"が必要なので注意。
- コンストラクタ
- デストラクタ
- クラス名に"~"をつけたメソッドがデストラクタです。
- フィールド(インスタンス変数)
- classブロックの中に宣言します。
- メソッド(インスタンス関数)
- クラスブロック内に書きます。
- 実装もあわせて書く方法と、プロトタイプ宣言のみ行っておき実装は後から書く方法があります。
- アクセス指定
- インスタンスの生成
- 変数の宣言と同じで、「<クラス名> <変数名>;」とします。
- コンストラクタが引数を持つ場合、「<クラス名> <変数名>(<引数>, ..);」とします。
#include <iostream> // クラス定義 class Kitten { // インスタンス変数 int age; char *name; public : // これ以下はpublic関数 // コンストラクタ / publicセクションに書く。 Kitten( char *name, int age ); // デストラクタ / クラス名に"~"をつける。 ~Kitten(); // メソッド char *getName(); // クラス内にはプロトタイプ宣言のみ書く。 void setName( char *name ); void meow() { std::cout << name << std::endl; // 実装付きで書くことも可能。 } }; // ";"が必要。 // コンストラクタの実装 Kitten::Kitten( char *name, int age ) { this->age = age; // thisへのアクセスには"->"を使う。 this->name = name; } // デストラクタの実装 Kitten::~Kitten( ) { std::cout << name << " destroyed." << std::endl; } // メソッドの実装。 char *Kitten::getName() { return name; } void Kitten::setName( char *name ) { this->name = name; } // メイン関数 int main() { Kitten kitten( "mii", 1 ); kitten.meow(); kitten.setName( "tora" ); kitten.meow(); return 0; }
実行結果です。
mii tora tora destroyed.