「クラス」の版間の差分
(相違点なし)
|
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; }