C++中聲明類的class與聲明構造體的struct症結字詳解。本站提示廣大學習愛好者:(C++中聲明類的class與聲明構造體的struct症結字詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是C++中聲明類的class與聲明構造體的struct症結字詳解正文
class
class 症結字聲明類類型或界說類類型的對象。
語法
[template-spec]
class [ms-decl-spec] [tag [: base-list ]]
{
member-list
} [declarators];
[ class ] tag declarators;
參數
template-spec
可選模板解釋。
ms-decl-spec
可選存儲類解釋有關更多信息
tag
給定於類的類型稱號。在類規模內的標志成了保存字。標記是可選項。假如省略,界說匿名類。
base-list
此類派生其成員的類或構造的可選列表。
member-list
類成員列表。
declarators
指定類類型一個或多個實例稱號的聲明符列表。假如類的一切數據成員是 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;
}
struct
struct 症結字界說構造類型和/或構造類型的變量。
[template-spec] struct[ms-decl-spec] [tag [: base-list ]]
{
member-list
} [declarators];
[struct] tag declarators;
參數
與class的參數雷同,可以參照下面的。
備注
構造類型是用戶界說的復合類型。 它由可具有分歧類型的字段或成員組成。
在 C++ 中,構造與類雷同,只不外其成員默許為 public。
應用構造
在 C 中,你必需顯式應用 struct 症結字來聲明構造。 在 C++ 中,你不須要在界說該類型以後應用 struct 症結字。
可以選擇在界說構造類型時,經由過程在右年夜括號和分號之間放置一個或多個逗號分隔的變量稱號來聲明變量。
可以初始化構造變量。 每一個變量的初始化必需括在年夜括號中。
有關相干信息,請參閱 class、union 和 enum。
示例
#include <iostream>
using namespace std;
struct PERSON { // Declare PERSON struct type
int age; // Declare member types
long ss;
float weight;
char name[25];
} family_member; // Define object of type PERSON
struct CELL { // Declare CELL bit field
unsigned short character : 8; // 00000000 ????????
unsigned short foreground : 3; // 00000??? 00000000
unsigned short intensity : 1; // 0000?000 00000000
unsigned short background : 3; // 0???0000 00000000
unsigned short blink : 1; // ?0000000 00000000
} screen[25][80]; // Array of bit fields
int main() {
struct PERSON sister; // C style structure declaration
PERSON brother; // C++ style structure declaration
sister.age = 13; // assign values to members
brother.age = 7;
cout << "sister.age = " << sister.age << '\n';
cout << "brother.age = " << brother.age << '\n';
CELL my_cell;
my_cell.character = 1;
cout << "my_cell.character = " << my_cell.character;
}
// Output:
// sister.age = 13
// brother.age = 7
// my_cell.character = 1