class (C++)
class キーワードは、クラス型を宣言したり、クラス型のオブジェクトを定義したりします。
[template-spec] class [ms-decl-spec] [tag [: base-list ]]
{
member-list
} [declarators];
[ class ] tag declarators;
パラメーター
template-spec
テンプレートの指定 (省略可能)。 詳細については、「テンプレートの仕様」を参照してください。class
class キーワード。ms-decl-spec
ストレージ クラスの指定 (省略可能)。 詳細については、__declspec キーワードを参照してください。tag
クラスに渡す型名。 タグは、クラスのスコープ内で予約語になります。 タグは省略できます。 省略した場合、匿名クラスが定義されます。 詳細については、「匿名クラス型」を参照してください。base-list
このクラスがメンバーを継承するクラスまたは構造体のリスト (省略可能)。 詳細については、「基本クラス」を参照してください。 各基底クラスまたは構造体の名前の前には、アクセス指定子 (public、private、protected) および virtual キーワードを付けることができます。 詳細については、「クラス メンバーへのアクセスの制御」のメンバー アクセスの表を参照してください。member-list
クラス メンバーのリスト。 詳細については、「クラス メンバー」を参照してください。declarators
クラス型の 1 つ以上のインスタンスの名前を指定する宣言子リスト。 宣言子には、クラスのすべてのデータ メンバーが public である場合、初期化子リストが含まれる場合があります。 これは、クラスよりも、データ メンバーが既定で public である構造体で、より一般的です。 詳細については、「宣言の概要」を参照してください。
解説
一般的なクラスの詳細については、次のトピックのいずれかを参照してください。
マネージ クラスと構造体の詳細については、「クラスと構造体」を参照してください。
使用例
// class.cpp
// compile with: /EHsc
// Example of the class keyword
// Exhibits polymorphism/virtual functions.
#include <iostream>
#include <string>
#define TRUE = 1
using namespace std;
class dog
{
public:
dog()
{
_legs = 4;
_bark = true;
}
void setDogSize(string dogSize)
{
_dogSize = dogSize;
}
virtual void setEars(string type) // virtual function
{
_earType = type;
}
private:
string _dogSize, _earType;
int _legs;
bool _bark;
};
class breed : public dog
{
public:
breed( string color, string size)
{
_color = color;
setDogSize(size);
}
string getColor()
{
return _color;
}
// virtual function redefined
void setEars(string length, string type)
{
_earLength = length;
_earType = type;
}
protected:
string _color, _earLength, _earType;
};
int main()
{
dog mongrel;
breed labrador("yellow", "large");
mongrel.setEars("pointy");
labrador.setEars("long", "floppy");
cout << "Cody is a " << labrador.getColor() << " labrador" << endl;
}