C++類就是為程式員提供一種建立一個新類型的工具,使這些新類型的使用能夠像內部類型一樣方便。
一個類就是一個使用者定義的類型,如何聲明一個類,形式如下:
class class_name {
access_specifier_1:
member1;
access_specifier_2:
member2;
...
} object_names;
樣本如下:
class Object {
public:
Object();
~Object(); //must be public
Object(int num);
int getNumber();
void setNumber(int num);
private:
int m_num;
};
如何定義一個已聲明的類:
Object::Object() {
m_num = 0;
}
Object::~Object() {
}
Object::Object(int num) {
m_num = num;
}
int Object::getNumber() {
return m_num;
}
void Object::setNumber(int num) {
m_num = num;
}
如何執行個體化和使用一個類:
int main () {
Object obj1;
Object obj2(110);
Object obj3 = Object(119);
Object *pObj4 = new Object();
Object *pObj5 = new Object(119);
Object objs[10];
printf("obj1.getNumber() = %d\n", obj1.getNumber());
printf("obj2.getNumber() = %d\n", obj2.getNumber());
printf("obj3.getNumber() = %d\n", obj3.getNumber());
printf("pObj4->getNumber() = %d\n", pObj4->getNumber());
printf("pObj5->getNumber() = %d\n", pObj5->getNumber());
for (int i = 0; i < 10; i++) {
printf("objs[%d].getNumber() = %d\n",i, objs[i].getNumber());
}
delete pObj4;
delete pObj5;
return 0;
}
struct 和union的類聲明
類可以定義不僅可以用關鍵字class,也可以用關鍵字struct和union。
class和struct的概念是相似的,可用struct和class聲明C++的類(即struct可以有資料成員和函數成員)。兩者之間唯一的區別是使用關鍵字struct聲明的類成員預設情況下,是public存取權限,而使用關鍵字class聲明的類成員預設是private存取權限。對於所有其他的目的,這兩個關鍵字是等價的。
union的概念是與struct和class聲明類不同的,因為union一次只能儲存一個資料成員,但union也可能擁有函數成員,union類的預設存取權限是public。