1.类的静态成员
静态成员包括静态成员变量和静态成员函数。使用静态成员变量可以实现类的数据成员的共享。
静态成员变量的值可以修改,并且对类的每个对象都相同,它是所有类对象共有的数据,对对象而言节约了空间。其存储空间的分配不在构造函数内完成,空间回收也不在析构函数内完成。它的主要目的是定义类的各个对象所共用的数据。
静态成员函数不属于类的特定对象,其可以在不生成类的对象的情况下,直接访问类的静态成员变量,而不能访问类的非静态成员变量。静态成员函数不含this指针,并且只能访问类的其他静态成员,而不能访问类的非静态成员。
2.友元
友元机制允许在类外对类对象的所有成员(包括私有、保护和公有)进行访问。友元既可以是一般函数,也可以是另一个类的成员函数,还可以是另一个完整的类。
当一个普通函数声明为一个类的友元函数后,它就可以访问该类的所有成员。
当一个类的成员函数声明为另一个类的友元函数后,它不仅可以访问自己所在类的所有成员,而且还可以访问friend语句所在类中所有成员。
当一个类声明为另一个类的友元时,这个类中的所有成员函数不仅可以访问自己所在类的所有成员,而且还可以访问friend语句所在类的所有成员。
3.常量类型
常量的概念主要是为了保证数据的安全性。常量在程序运行过程中其值是不可改变的。
如果将一个对象定义为常量对象,那么它的所有数据成员的值在对象的整个生存期内都不能被改,因此在定义时要对数据成员进行初始化。
类的常量成员包括常量成员函数和常量数据成员。常量成员函数不能改变类的数据成员的值,也不能调用该类中非常量成员函数,只能调用该类的常量成员函数。常量数据成员不能通过任何函数对其赋值,构造函数对其进行初始化时,只能通过初始化列表进行。
常量引用的对象不能被修改。若在函数调用中,不希望被调用函数改变参数的值,那么就应该用常量引用来作函数的形参。
常量指针的特点是不能改变指针的值,即指针所保存的地址,但可以改变所指向变量的值。
指向常量的指针的特点是可以改变指针的值,即指针所保存的地址,但不能改变所指向变量的值。
4.对象的生存期
对象的生存期是指对象从创建到结束的时间。
局部对象是定义在一个程序块或函数体内的对象,定义对象时,系统自动调用构造函数创建对象,对象的生存期开始;退出程序块或函数时,系统自动调用析构函数,释放该对象,对象的生存期结束。
静态对象的生存期从第一次定义对象时开始,到程序运行结束时终止。
全局对象的生存期从程序开始运行时开始,到程序运行结束时终止。
动态对象的生存期从通过new创建时开始,到通过delete释放时终止。如果没有delete会出现内存泄漏。