-
一、const成员变量(常成员变量)
1、只能使用初始化列表对常成员变量进行初始化;
2、常成员变量可以被访问,但是不能被修改;
3、类中所有构造函数都必须在初始化列表对常成员函数进行初始化(包括拷贝构造,移动构造)。
声明:
const int a;
const int arr[2];
int * const p;
赋值:Stu::Stu(int a,int *arr):a(a),arr{arr[0],arr[1]}
{
}
-
二、const成员函数(常成员函数)
1、常成员函数中不能修改任何成员变量的值;
2、常成员函数中不能含有修改成员变量的逻辑;
3、常成员函数只能调用常成员函数(普通成员函数可能会修改成员变量的值);
4、常成员函数可以被成员函数调用。
声明:void show()const;
定义:void Stu::show()const
{
}
不能修改成员变量
不是成员变量可以修改
不能存在可以修改成员变量的逻辑
常成员函数可以被调用
常成员函数不能调用非常成员函数(存在可能修改成员变量的逻辑)
-
三、const对象(常对象)
1、常对象中所有成员变量的值都不能被修改,必须通过构造函数的两种方式将所有成员变量进行初始化。
2、常对象可以访问成员变量、常成员变量、常成员函数,不能访问非常成员函数。
要初始化所有成员变量
不能访问非常成员函数
能访问成员变量、常成员变量、常成员函数