类与数据封装
3.1类
类是具有相同属性和行为的一组对象实例的集合,它为属于该类的对象实例提供了统一的抽象描述,包含属性和行为。
类的语法格式:
class 类名称
{
public:
公有数据成员列表
公有成员函数列表
protected:
受保护的数据成员列表
首保画的成员函数列表
private:
私有数据成员列表
私有成员函数列表
}
实现类的成员函数语法格式:
返回类型 类名::成员函数名(参数)
{
成员函数体
}
3.2类的特殊成员函数
类设计中会涉及几个特殊的成员函数:
1)构造函数
在创建一个类时常常需要给一些数据成员赋初始值,有时还需要申请一些系统资源,为指针分配存储空间。这些需要使用构造函数来完成,当用户创建一个类的对象时,相应的构造函数会被自动的调用。构造函数的语法格式:
类名称 (参数列表){
构造函数体
}
2)析构函数
C++规定当一个对象生命周期结束前会自动的调用一个函数:析构函数。析构函数的语法格式如下:
~类名(){
析构函数体
}
3)拷贝构造函数
类名(const 类名 &){
拷贝构造函数体
}
3.3类的静态成员
1)静态数据成员
static 数据类型 数据成员名;
对于属于同一类的各对象,静态数据成员存储在同一个地方,它对每个对象都是相同的,如果某个对象更新了静态数据成员的值,则对其他对象来说,他们以后访问到的这个静态数据成员的值时更新后的值。
2)静态成员函数
一个仅使用静态数据成员的成员函数应该将其说明为静态成员函数。要将一个成员函数说明为静态成员函数很简单,就是在类的说明中,在该成员函数原型的最前面加上关键字static。
3.4类的const成员
const数据成员
C++规定:数据成员初始化必须在构造函数的实现过程中通过成员初始列表来完成。
const成员函数
说明一个成员函数为const成员函数的语法规则为:
返回值类型 成员函数名称(函数参数列表) const{
函数体
}
3.4this指针
this指针指向该成员函数所属类创建的对象。
3.5类的朋友
C++提供友元机制,允许我们在设计类时声明类的朋友。类的朋友可以是一个类,一个类的成员函数或者一个全局函数,类的朋友可以不受任何限制地访问类的数据成员和成员函数,不受数据封装机制带来的限制。使用friend可以为一个类声明朋友,一个类可以有3种类型的朋友,为类说明朋友的语法格式如下:
friend class 友元类名;//它的朋友是一个类
friend 返回值类型 类名::函数名;//它的朋友是一个类的成员函数
friend 返回值类型 函数名;//它的朋友是一个类全局函数
3.6类模板
定义类模板的语法格式如下:
Template <class T1, class T2,...> class 类模板名称
{
类模板体
}
类模板的成员函数的实现放在类模板体外,语法格式如下:
template<class T1 ,class T2,...>
返回值类型 类模板名称 <T1, T2,...>::成员函数名(形式参数)