目录
前言
const 修饰的对象调用函数
const 修饰的对象如何正确调用函数
前言
在上一章完善了日期类函数
C++ ——— 完善日期类-CSDN博客
接下来要讲解的 const 修饰对象就拿日期类举例
const 修饰的对象调用函数
代码演示:
const Data d1(2024, 12, 15);
Data 这个类实例化了一个 d1 对象,和普通对象不同的是,加上了 const 修饰
也可以说是缩小了 d1 的权限
那么利用 d1 调用函数时,会有什么影响
打印函数:
void Print()
{cout << _year << "年" << _month << "月" << _day << "日" << endl;
}
代码验证:
调用函数时发现直接报错了,因为实参是 const 修饰的对象
而形参部分隐藏的 this 指针没有被 const 修饰
这就造成了权限的放大,所以才会报错
const 修饰的对象如何正确调用函数
在讲解权限的相关知识时,讲解到过,权限可以缩小或者平移,但是不能放大
C++ ——— 权限的缩小、平移、放大-CSDN博客
那么实参部分是被 const 修饰过的对象,形参部分接收也要使用 const 修饰的形参
但是在最开始介绍类和对象时说过,this 指针不能显示写出来,所以不能在形参内部加上 const
所以 C++ 规定,要加上 const 修饰形参的函数,在函数后面加上 const 修饰
代码演示:
void Print() const
{cout << _year << "年" << _month << "月" << _day << "日" << endl;
}
代码验证:
所以在日期类完善这一章节,在每个函数后面,都可以加上 const 修饰
以免 const 修饰的对象不能调用函数的情况