《(6)--3.3共用数据的保护.ppt》由会员分享,可在线阅读,更多相关《(6)--3.3共用数据的保护.ppt(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、共用数据的保共用数据的保护 目的:目的:既要使数据能在一定范围内共享,又要保证它不被任意修改 方法:方法:将相关数据定义为const常量 关键:关键:理解const限定或保护的是什么const用法分用法分类class Time public:void setTime();void setTime(const Time&t);void setTime(const Time*p);void getTime()const;void setTime();private:int hour;int minute;int second;const int num;constconst用法分类:用法分类:常对
2、象常对象成员常数据成员常成员函数指向对象的常指针指向常对象的指针常引用Time t1;const Time t2;Time*const p1;const Time*p2;常常对象象 在定义对象时指定对象为常对象:在定义对象时指定对象为常对象:定义对象时用const关键字修饰;常对象必须有初值,初始化后不能被修改;定义常对象的一般形式:类名 const 对象名(实参表);例如:Time const t1(12,34,46);const 类名 对象名(实参表);例如:const Time t1(12,34,46);常常对象象 使用规则:使用规则:对象中所有成员的值都不能被修改只能调用常成员函数,而
3、不能调用普通成员函数例如:const Time t1(10,15,36);t1.get_time();/访问普通成员函数非法若声明为常成员函数,访问合法:void get_time()const;常常对象成象成员 常对象成员分类常对象成员分类常数据成员常成员函数 常数据成员常数据成员用关键字const声明,其值不能被改变const int hour;/声明hour为常数据成员只能通过构造函数的参数初始化表对常数据成员进行初始化Time:Time(int h):hour(h)常常对象成象成员 常成员函数常成员函数只能引用本类中数据成员,而不能修改它们声明常成员函数的一般形式为:类型名 函数名(参
4、数表)const注意:const是函数类型的一部分,在声明函数和定义函数时都要有const关键字;const成员函数可以引用const数据成员,也可以引用非const的数据成员const数据成员可以被const成员函数引用,也可以被非const的成员函数引用 常常对象成象成员 如果要求部分数据成员的值改变,部分不允许改变如果要求部分数据成员的值改变,部分不允许改变将部分数据成员声明为const用非const成员函数引用const数据,并修改非const数据成员的值 如果要求所有的数据成员的值都不允许改变如果要求所有的数据成员的值都不允许改变可以将所有的数据成员声明为const将对象声明为con
5、st(常对象),然后用const成员函数引用数据成员 指向指向对象的常指象的常指针 回顾:对象指针回顾:对象指针指向对象的指针 将指针变量声明为将指针变量声明为constconst型型指针值始终保持为其初值,不能改变并不能保证指针指向的对象不改变 指向指向对象的常指象的常指针 定义指向对象的常指针的一般形式为定义指向对象的常指针的一般形式为类名*const 指针变量名;Time t1(10,12,15),t2;/定定义对象象Time*const ptr1;/const位置在指位置在指针变量名前面,量名前面,规定定ptr1的的值是常是常值ptr1=&t1;/ptr1指向指向对象象t1,此后不能再
6、改,此后不能再改变指向指向ptr1=&t2;/错误,ptr1不能改不能改变指向指向指向常指向常对象的指象的指针变量量 指向常变量的指针变量:指向常变量的指针变量:一般形式:const 类型名*指针变量名;例如:const char*ptr;注意区分:char*const ptr;指向常指向常对象的指象的指针变量量 指向常对象的指针变量:指向常对象的指针变量:指向常对象的指针变量,不能通过该指针改变所指向对象的值但直接通过对象本身可以更改 Time t1(10,12,15);const Time*p=&t1;t1.hour=18;/合法合法(*p).hour=18;/非法,不能通非法,不能通过指
7、指针变量改量改变t1的的值对象的常引用象的常引用 将引用声明为将引用声明为constconst,即常引用,即常引用#include using namespace std;class Timepublic:Time(int,int,int);int hour;int minute;int sec;Time:Time(int h,int m,int s)/定定义构造函数构造函数hour=h;minute=m;sec=s;void fun(Time&t)/形参形参t是是Time类对象的引用象的引用 t.hour=18;int main()Time t1(10,13,56);fun(t1);coutt1.hourendl;return 0;对象的常引用象的常引用 使用常引用作函数形参使用常引用作函数形参void fun(Time&t)更改为:void fun(const Time&t);小小结常对象1常对象成员2指向对象的常指针3指向常对象的指针4常引用5
限制150内