常对象
const A a(1);
A const a(1);
- 常对象只能调用常成员函数 (除了由系统自动调用的隐式构造函数和析构函数)
- 常对象中所有的数据成员为常变量(不能被修改),且必须有初始值
常对象成员
常成员函数
#include <iostream>
using namespace std;
class a
{
public:
void fun() const;
};
//注意:定义时要与声明一致,即别漏了const
void a::fun() const
{
cout << "test" << endl;
}
int main()
{
//常成员函数既可以被常对象调用,也可以被非常对象调用
a a1;
a1.fun();
//常对象
const a a2;
a2.fun();
}
- 常成员函数 不可改变 对象的任何数据成员值
> f1 与 f2
class a
{
public:
void f2(const int &d)
{
data = d;
}
private:
int data;
};
常数据成员
值不能改变。
只能通过构造函数的参数初始化表对常数据成员进行初始化
- 不要误认为常对象中的成员函数都是常成员函数,常对象只保证其所有数据成员的值不被修改。
- 如果在常对象中的成员函数未加const声明,则编译系统会把它当非const成员函数处理。
- 常成员函数不能调用另外一个非cosnt成员函数。