课后整理—— 共用数据的保护 const数据

本文详细讲解了常对象的概念、定义方法(如constTime t1(1,2,3)),常数据成员的作用及初始化规则,常成员函数的使用限制,以及指向常对象的指针。重点强调了mutable关键字的应用和常指针在函数参数传递中的作用。
摘要由CSDN通过智能技术生成

2021年4月8日整理

常对象
作用:当定义一个对象为常对象,则它的对应数据成员变为常变量,只可访问不可修改,但成员函数仍是普通的成员函数,且该对象只能调用常成员函数而不能调用普通的成员函数。
定义方法:const Time t1(1,2,3);(建议用第一个,方便记忆)
Time const t1(1,2,3);
注意:1. const放在类名前后都是合法的。常对象必须在定义之时初始化!
2.当一定要修改某个常对象中的某个数据成员时,可定义该数据为mutable int hour
关于mutable:即使将类的数据成员定义为了mutable,但当常对象通过函数来调用数据成员时,依然只能用常数据成员。所以还要将成员函数定义为常成员函数。

常数据成员
作用:当一个数据成员定义为常数据成员时,该数据不可被修改只能访问
定义方法:const int hour;
初始化方法:1.不用构造函数,在定义时初始化。
2.在构造函数类体中赋值
3.构造函数参数初始化表
注意:第四版教材中写常数据成员的初始化必须用构造函数的参数初始化表来初始化,但现今的编译系统无此限制。不能用其它函数来对常数据成员赋值 。当1与2或3同时对数据赋值时,以构造函数的操作为准。

常成员函数
作用:当一个对象被定义为常对象时,该对象只能调用常成员函数。常成员函数可调用但不能改变常数据成员和非常数据成员。
定义方法: void get_time() const
注意:1.const的位置在函数的括号后面!
2.常成员函数不可调用非常成员函数。

2020年4月15日

指向对象的常指针
定义方法:类名 *const 指针变量名——Time *const p
意义:
1.常指针的“常”限制的是指针,该指针始终指向一个对象,不能改变,但所指向的对象的值可以改变,可以通过该指针来改变对象的值。
2.常指针常用作函数的参数,目的是不改变指针的指向。
3.在定义之初就初始化,否则部分编译器会报错
注意:在定义一个普通的指针初始化时,可以int *p=a,但对于指向对象的指针,要加上&即Time *const p=&s1;

指向常对象的指针
定义方法:const Time *p
意义:
1.定义为常对象的对象只能用指向常对象的指针来指向它,该“常”字在对象前,故用于限定对象。该指针可以指向不同的常对象,但对象的值无法改变。
2.指向常对象(变量)的指针也可指向非const的对象(变量),用指针访问该对象(变量)的期间,该对象具有const性质,只可读不可写。
3.当调用函数时不希望该对象的值被改变,就将该函数的参数设为指向常对象的指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值