码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【C++】之类和对象 - const成员函数


    1. class Date
    2. {
    3. public:
    4. Date(int year, int month, int day)
    5. :_year(year), _month(month), _day(day)
    6. {
    7. }
    8. void Print()
    9. {
    10. cout << _year << "-" << _month << "-" << _day << endl;
    11. }
    12. private:
    13. int _year;
    14. int _month;
    15. int _day;
    16. };
    17. int main()
    18. {
    19. const Date d1(2022, 8, 10);
    20. d1.Print();
    21. return 0;
    22. }

    以上这段代码编译器会报错,我们用Date类实例化了一个带有const修饰的对象,然后调用了一下类中的函数,报错意思也就是一个变量的权限不能从仅仅可读,变为可读可写,权限只可以缩小,而不可以放大。

    这时需要用到const成员函数,有const修饰的对象,只能调用有const修饰的成员函数

    将Print函数改为const成员函数,即可完美运行。

    支持这一完美运行的实质是什么呢? 

    每个成员函数都有一个this指针,而const成员函数,const就是用来修饰this指针的

    即const Date& this(const Date* const this),所以当const Date d1(2022,8,10)调用函数时,给this传入的参数是&Date,也就是Date的地址,但是这个指针类型是 const Date*,指向的内容不可改变,则传入this指向的内容也不可以改变

    思考以下几个问题:

    1. const对象可以调用非const成员函数吗?

    答:不可以

    2.非const对象可以调用const成员函数吗?

    答:可以,权限可以缩小

    3. const成员函数内可以调用其它的非const成员函数吗?

    答:不可以,权限不可以放大。const成员函数的this指针:const Date& this,调用其他成员函数,就要把this指针当参数传过去,const Date&类型不可以传给Date&

    4.非const成员函数内可以调用其它的const成员函数吗?

    答:可以,权限可以缩小。与上面过程相反

  • 相关阅读:
    12.数组的初始化和引用
    相机类型的分辨率长宽、靶面尺寸大小、像元大小汇总
    非自交任意多边形与矩形框的交集面积计算方法
    (附源码)python电影院信息管理系统 毕业设计 021844
    【FPGA教程案例63】硬件开发板调试3——vio虚拟IO核的应用
    以太网中的各种帧结构
    【TSP】基于matlab GUI免疫算法结合蚁群算法求解旅行商问题【含Matlab源码 1910期】
    JDBC复习
    canvas画布中beginPath和closePath的作用要点
    Comfyui|AnimateDiff生成动画基础使用方法
  • 原文地址:https://blog.csdn.net/Hello_World_213/article/details/126268747
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号