類別 (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;
}