前言
今天我们来了解一下const成员的基本使用,以及const取地址重载的运用
来开始今天的学习
const成员
1.基本定义,
将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数 隐含的*this指针,表明在该成员函数中不能对类的任何成员进行修改。
一般使用如下:
因为this是隐藏的,使用时const放在函数参数括号之后,表示const Date*this 的作用
2,使用场景
此时可以保证*this的成员不被被修改可以用在一些不修改数时的情景,但是如果是一些计算等值会变化得函数,就不能使用它,比如int operator+=(const Date &d)是一个错误用法
3,const的调用权限
现在有几个问题,如果在函数中同时存在const 成员函数,与非const成员函数的话下面情况,会怎麽样
1. const对象可以调用非const成员函数吗?
是不可以的,这里有权限放大的错误,如下cosnt 的对象相当于d2传过出的是const Date*this,
而printf函数是默认的Date*this函数,那么this由原来的只读不写变成了可读可写,权限放大,会出现错误
const Date d2(2024, 3, 1); d2.printf();
void printf() //Date类里的函数 { cout