常类型:
常对象包括常成员函数和常数据成员.
1,
常对象定义格式: 类名 const 对象名;
const 类名 对象名;
定义常对象时必须初始化,且其数据不能被更新.
2,
常对象只可以调用它自己的常成员函数.
常成员函数:
1,
1,声明格式: 类型 函数名(参数表) const;
2,const是函数类型的一耳光组成部分,在定义部分也要有const.
3,常成员函数不能更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数.
4,const关键词可以参与区分重载函数.
常数据成员:
1,
类中有常数据成员,那么构造函数只能通过初始化列表来对该数据成员进行初始化.格式:
构造函数(参数表):常数据成员1(参数1),常数据2(参数2),…,常数据n(参数n){}
2,初始化const或引用类型数据成员的唯一机会是在构造函数的初始化列表中.
静态成员:
静态数据成员:
节省存储空间.
定义格式:
类内定义:static 类型 静态数据成员=值;
类内声明,类外定义:static 类型 静态数据成员;
类型 类名::静态数据成员=值;
引用格式:类名::静态数据成员
1,
静态数据成员是累中所有对象共享的成员.
因静态数据成员不属于任何一个具体对象,因此必须对其初始化,但不能再构造函数中进行.(类内定义和类外定义),
静态成员函数:
1,
声明格式:
static 类型 静态函数名(参数表);
调用格式:
类名::静态成员函数名(参数表);
2,
静态成员函数只能访问静态数据成员`静态成员函数和类以外的函数和数据,不能访问类中的非静态数据成员(非静态数据成员只要对象存在时才有意义).
子对象:在一个类中定义另一个类的对象.
子对象工作函数的数据和执行次序:(类A包含类B的对象obj.)
1,类A的构造函数: A(参数表1):obj(参数表2) {函数体;}
2,若建立对象obj时调用类B的默认构造函数,则可省略”obj(参数表2)”
3,当类A中有多个子对象时,在A的构造函数”:”后依次列出个子对象的初始化表达式,它们之间用逗号分隔.(子对象初始化列表).
4,A的构造函数执行次序是以子对象在类A中声明的次序调用子对象初始化列表中列出的各构造函数,然后执行函数体.
子对象析构函数的设计和执行次序:
~A() {函数体;}
执行次序: 先执行函数体,再以子对象在类A中声明的相反次序调用个类的析构函数.