类实际上是用户自定义的类型, 包含了数据和用于处理数据的方法。类中的数据和方法称为类的成员。
1 类的定义
类定义是以关键字 class 开头,后跟类的名称。类的主体是包含在一对花括号中。类定义后必须跟着一个分号或一个声明列表.
如:
class Book
{
public:
string author;
int page;
int get_page(void);
Book();
~Book();
protected:
string isbn;
sting get_isbn(void);
private:
double prices;
double get_prices(void);
};
为了方便说明, 上面定义了一个非常全面的类,实际中可能不是每部分都需要用到。
2 访问修饰符 public, private, protected
访问修饰符确定了类成员的访问属性,说白了就是成员可访问的权限。 如果不声明, 默认是private. 可以有多个访问修饰符, 它的作用范围是从声明的哪一行开始, 一直到遇到下一个访问修饰符为止。
3 类方法的定义
上面定义的例子中只是声明了类方法, 还没有定义它。 定义时有2种方法,一种是在类中进行定义, 另一种是在类的外部进行定义。
3.1 在类中定义
如下面的示例, 定义了get_page方法。
class Book
{
public:
string author;
int page;
int get_page(void);
{
return page;
}
Book();
~Book();
protected:
string isbn;
sting get_isbn(void);
private:
double prices;
double get_prices(void);
};
3.2 在类的外部定义
class Book
{
public:
string author;
int page;
int get_page(void);
Book();
~Book();
protected:
string isbn;
sting get_isbn(void);
private:
double prices;
double get_prices(void);
};
int Book::get_page(void)
{
return page;
}
在类的外部进行定义时, 需要用到:: , 它是作用域限定符。 上面的Book::get_page 表示get_page这个方法是为Book这个类定义的。
4 构造函数和析构函数
构造函数(constructor)和析构函数(destructor)本质上也是函数, 只是比较特殊一点。 构造函数的名字跟类名一致, 析构函数的名字跟类名也一致, 只是额外在前面添加了~ 。 构造函数在创建类的新对象时被执行, 而析构函数在销毁一个对象时被执行。 其实析构函数的名字翻译让人很难理解, 翻译成解构函数就很好理解了。
|