ホームに戻る
 クラス

#include <iostream>

/*
*
*   クラス
*
*   Cの構造体を拡張したもの
*   構造体の要素をメンバ変数と呼び、
*   クラスでは新たにメンバ関数を持つ。
*
*   コンストラクタは作成時に自動的に実行され、
*   デストラクタは破棄時に自動的に実行される。
*
*   作成時はブロック内で定義された場合と new で生成した場合。
*   破棄時はブロックを出た場合と delete を呼んだ場合。
*
*   クラスの目的はデータの隠蔽と安全性の確保であるため、
*   データはできるだけ privete で定義するべきであるし、
*   値の出し入れはメンバ関数内でデータの整合性を確認すべきである。
*
*   クラスを設計する場合のアイデアとして、
*   データを扱う場合は必ずメンバ関数を使う必要が無い場合がある。
*   例えば次のような外部関数で十分な場合がある。
*
*   void f(A &a){}
*
*/

class A{
  int num;  // メンバ変数
public:
  A(int n = 1) : num(n){std::cout << "const A" << std::endl;}  // コンストラクタ
  ~A(){std::cout << "dest A" << std::endl;}  // デストラクタ
  int f();  // メンバ関数
};

int A::f(){
  std::cout << "func A" << std::endl;
  return this->num;  // this はクラス自身のポインタをあらわす
}

int main(){
  A a; // コンストラクタを実行

  std::cout << a.f() << std::endl;

  return 0;

  // デストラクタを実行
}

const A
func A
1
dest A

inserted by FC2 system