1、常对象一定要初始化,永不能修对象的数据成员,常对象只能调用常成员函数(在调用的常成员函数中不能调用普通成员函数)
用const修饰的对象叫对象常量,其格式如下:
〈类名〉const 〈对象名〉 或者 const 〈类名〉〈对象名〉
2、常成员函数:
用const关键词说明的函数叫常成员函数。其格式如下:
〈类型〉〈函数名〉(〈参数表〉)const;
常成员函数不能访问普通成员函数和常成员变量,但是普通成员函数能够访问常成员函数
(1) const是函数类型的一个组成部分,因此在函数实现部分也要带有const关键字。
(2) 常成员函数不更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数。
(3) 常对象只能调用它的常成员函数,而不能调用其他成员函数。成员函数与对象之间的操作关系如表所示。
成员函数与对象之间的操作关系
| 常成员函数 | 一般成员函数 |
常对象 | 可以 | 不可以 |
一般对象 | 可以 | 可以 |
(4) const关键字可以用于参与重载函数的区分。例如:
void Print();
void Print() const;
这两个函数可以用于重载。重载的原则是:常对象调用常成员函数,一般对象调用一般成员函数。
常成员变量:只能在构造函数的初始化列表初始化;
如:
const int a;
const int b;
int c;
stu::stu(int a,int b,int c) :a(a),b(b),c(c){}
或者:stu::stu(int a,int b,int c):a(a),b(b) {
this->c = c;
}
下面是错误的赋值方法:
stu::stu(int a,int b,int c) {
this->a=a;
this->b = b;
this->c = c;
}