码农知识堂 - 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成员函数吗?

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

  • 相关阅读:
    Matlab 方位角计算之二
    【Webpack】CSS 处理
    学好MySQL增删查改,争取不做CURD程序员【下篇(六个小时肝MySQL万字大总结)】
    Netty入门指南之Reactor模型
    Python爬虫抓取网站模板的完整版实现
    在银行外包如何自我提升
    2024广东省职业技能大赛云计算赛项实战——集群部署GitLab Runner
    【开源】基于JAVA的超市商品管理系统
    关于#c语言#的问题:VS键盘录入中文正常,输出时乱码怎么解决啊(开发工具-visual studio)
    检验科LIS系统,即实验室信息管理系统
  • 原文地址:https://blog.csdn.net/Hello_World_213/article/details/126268747
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号