「クラス」の版間の差分

提供: C++入門
移動: 案内検索
(ページの作成:「C++クラス(class) とは、メンバ変数とメンバ関数を持ちます。構造体では、メンバには、変数しかありませんでしたが...」)
 
(相違点なし)

2014年7月27日 (日) 14:58時点における最新版

C++クラス(class) とは、メンバ変数とメンバ関数を持ちます。構造体では、メンバには、変数しかありませんでしたが、クラスでは、メンバ関数も持ちます。クラスの実態をインスタンスと呼びます。

読み方

クラス
くらす
class
くらす

概要

クラスは、メンバ変数とメンバ関数を持ちます。 どちらも公開(public)、非公開(private)を持つことができます。

特別なメンバ関数として コンストラクタとデストラクタ を持ちます。 コンストラクタは、クラスのインスタンスを作成するときに、自動的に呼び出され、主にクラスを初期化するために利用されます。 デストラクタは、インスタンスを削除する直前に自動的に呼び出されます。後始末を担当するメンバ関数です。ファイルのクローズ、メモリの開放等の終了処理を担わせることができます。

クラスの概念

クラスには、いくつかの概念があります。

  • カプセル化
  • 継承
  • ポリモーフィズム

カプセル化

1つのクラスにデータとデータを操作する機能をまとめます。データと操作をまとめることをカプセル化と呼びます。

継承

継承とは、あるクラスを基にして、別のクラスを作ることです。 すでにあるクラスの一部の機能を書き換えたいときに、派生クラスで上書きする、といった使い方ができます。

ポリモーフィズム

継承するときに、親クラスのメンバ関数を子クラスで上書きすることをオーバーライドといいます。同一のメソッドで異なる処理を行われる性質を「ポリモーフィズム」(polymorphism)と呼びます。

STL(Standard Template Library)

C++には、標準ライブラリのクラスとして STL(Standard Template Library) が提供されています。たとえば、コンテナの機能が提供されます。

クラスの例

class Person{
	private:
		int age_;
	public:
		Person(int age) : age_(age) {}
		virtual ~Person() {}
		int getAge() { return age_; }
		void incAge() { age_++; };
 
};

インスタンスの作成

インスタンスは、変数として宣言した場合とnewを利用して作成する場合があります。

std::string str;
 
std::string *ptr = new string();

new/delete に関しては、newとdeleteをご参照ください。

継承の例

より詳しい継承については、継承をご参照ください。

#include <iostream>
using namespace std;
 
class B {
        public:
                void x() {
                        cout << __PRETTY_FUNCTION__ << endl;
                }
                void f() {
                        cout << __PRETTY_FUNCTION__ << endl;
                }
};
 
class C1 : public B {
        public:
                void f() {
                        cout << __PRETTY_FUNCTION__ << endl;
                }
};
int main(int argc, char const* argv[])
{
        C1 c1;
 
        c1.f ();
        c1.x ();
 
        return 0;
}

関連項目