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。