共用方式為


類別 (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
    選擇性的類別或結構,這個類別會衍生其成員的清單。如需詳細資訊,請參閱 基底類別。每個基底類別或結構名稱前可以加上存取規範 (公用私用保護) 和 虛擬關鍵字。請參閱成員存取表格控制存取類別成員如需詳細資訊。

  • member-list
    類別成員的清單。如需詳細資訊,請參閱類別成員

  • declarators
    指定名稱的類別型別的一或多個執行個體的宣告子清單。多個宣告可能包含初始設定式清單,如果所有的資料成員的類別皆public。這是較常見的結構,其資料成員的public依預設值,比以類別。如需詳細資訊,請參閱 多個宣告的概觀

備註

如需有關類別一般情況下,參照下列情況之一的下列主題:

在 managed 的類別和結構的資訊,請參閱類別和結構

範例

// 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;
}

請參閱

參考

C + + 關鍵字

類別、 結構和等位