class (C++)

class キーワードは、クラス型を宣言したり、クラス型のオブジェクトを定義したりします。

構文

[template-spec]
class [ms-decl-spec] [tag [: base-list ]]
{
   member-list
} [declarators];
[ class ] tag declarators;

パラメーター

template-spec
テンプレートの指定 (省略可能)。 詳細については、「テンプレート」を参照してください。

クラス
class キーワード。

ms-decl-spec
ストレージ クラスの指定 (省略可能)。 詳細については、「__declspec」キーワードを参照してください。

タグ
クラスに渡す型名。 タグは、クラスのスコープ内で予約語になります。 タグは省略できます。 省略した場合、匿名クラスが定義されます。 詳細については、「匿名クラス型」を参照してください。

base-list
このクラスがメンバーを継承するクラスまたは構造体のリスト (省略可能)。 詳細については、「基本クラス」を参照してください。 各基底クラスまたは構造体の名前の前には、アクセス指定子 (publicprivateprotected) と virtual キーワードを付けることができます。 詳細については、クラス メンバーへのアクセス制御に関するページの、メンバー アクセスの表を参照してください。

member-list
クラス メンバーのリスト。 詳細情報については、「クラス メンバーの概要」を参照してください。

declarators
クラス型の 1 つ以上のインスタンスの名前を指定する宣言子リスト。 宣言子には、クラスのすべてのデータ メンバーが public である場合、初期化子リストが含まれる場合があります。 これは、クラスよりも、データ メンバーが既定で public である構造体で、より一般的です。 詳細については、宣言子の概要に関するページを参照してください。

解説

一般的なクラスの詳細については、次のトピックのいずれかを参照してください。

C++/CLI と C++/CX のマネージド クラスと構造体の詳細については、クラスと構造体に関するページを参照してください

// class.cpp
// compile with: /EHsc
// Example of the class keyword
// Exhibits polymorphism/virtual functions.

#include <iostream>
#include <string>
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;
}

関連項目

キーワード
クラスと構造体