4.4.1 const 修饰符
定义常对象: 类名 const 对象名 或者 const 类名 对象名;
!:在定义常对象时必须进行初始化
常引用语法:const 数据类型 & 引用名;
常引用经常被作为参数的形参,并保证实参不被更改
例如:
void display( const int &t)
{
t=t+5; //错误,常引用不能改变值
}
int main()
{
int t(10);
void display(t);
return 0;
}
4.4.2 常数据成员
类中定义常数据成员格式:
class 类名
{
const 数据类型 数据成员;
};
1)那么任何函数都不能对常数据成员赋值
2)它只能在构造函数的初始化列表中进行初始化
#include <iostream>
//常数据成员实例
using namespace std;
class Point
{
public:
Point (double new_x,double new_y);
Point (const Point &p); //拷贝构造;
void disp();
private:
double x;
const double y;// 常数据成员;
};
Point::Point(double new_x,double new_y):y(new_y)
{
x=new_x;
}
Point::Point(const Point & p):y(p.y) //初始化列表y;
{
x=p.x;
}
void Point::disp()
{
cout<<"x="<<x<<","<<"y="<<y<<endl;
}
int main()
{
Point p1(1,2),p2(p1);
p1.disp();
p2.disp();
return 0;
}
结果:
错误示例:
C(){x=1 ,y=2} 错误 ;--> C ( ) : x(1),y(2) 正确
C ( ):(x=1),(y=1) 错误。
4.4.3 常成员函数
常成员函数声明:
class 类名
{
public: 函数返回值类型函数名 (形参列表)const
...
};
常成员函数不可调用非const成员函数,非cons成员函数只可以读取常数据成员,但不可修改。