在程序涉及的过程中一个非常重要的因素就是考虑数据的安全性。因为如果数据被意外的修改,那么无论程序有多么正确,设计有多么巧妙,最终都得不到正确的结果。在程序中既要让程序在一定的范围内共享,又要保证数据的安全性,这时就可以使用const,把对象或对象成员定义成const型的
#include<iostream>
using namespace std;
class Box
{
public:
Box(float l,float w,float h):length(l),width(w),height(h)
{
}
float volume() const
{
return length*width*height;
}
float area()
{
return 2*(length*width+length*height+width*height);
}
private:
float length,width,height;
};
int main()
{
const Box box(1,2,3); //声明const型对象的同时初始化
box.volume();
box.area(); //错误,const类型的对象只能调用const类型的函数
return 0;
}
通过程序,我们可以看出:
1.如何将一个成员函数声明为成员函数:只需要在成员函数声明的后面加上 const即可,如 float volume() const
2.常对象中所有的数据成员都不能被改变
3.常对象只能调用常对象函数,不能调用非常对象函数
介绍完常对象后我们来介绍一下常对象成员
因为对象的成员被分为数据成员和成员函数,所以常对象成员也分为常数据成员和常成员函数
1.常数据成员:和普通变量一样,也是用const来声明
如上面的程序中可以这样声明常数据成员
private:
const float length;
const float width;
const float height;
但是常数据成员初始化时不能在构造函数内部初始化,必须使用构造函数的参数初始化列表。所示如下
Box(float l,float w,float h):length(l),width(w),height(h)
{
}
不能这样:
Box(float l,float w,float h)
{
length=l;
width=w;
height=h;
}
2.常成员函数
常成员函数就是将类中的函数声明为const型的,这样的成员函数不能修改类对象的数据成员的值。如果将一个对象声明为常对象,通过常对象名只能访问该对象的常成员函数
常成员函数的声明方式:
返回值类型 成员函数名(形参表)const;
返回值类型 类名::成员函数名(形参表) const
注意:在声明和定义部分必须包含const关键字,但在调用时则不必加const