码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C++基础——const成员函数


     

    目录

    一.Const成员函数      

    1.定义:

    2.格式:

    3.代码示例:

    .h文件:

    definition.cpp文件 

     特性:

    例:

    那么const对象既可以调用非const型成员函数吗?

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

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

    总结:


    一.Const成员函数      

    1.定义:

            将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,表明在该成员函数中不能对类的任何成员进行修改。

            const修饰成员函数的时候,const需要放在成员函数的后面,不能放在一开始,,若是放在一开始的话,那么const修饰的是函数的返回值,而非是修饰成员函数了。

    2.格式:

            返回值类型 函数名称 ( ) const {

                    //函数体.....

                                    }

    3.代码示例:

    .h文件:

    1. class Date {
    2. public:
    3. //构造函数不可以使用const修饰,构造函数若加了const就不能初始化值了
    4. Date(int year = 1199, int month = 12, int day = 15);
    5. void Print() const;
    6. void Reset1()const;
    7. void Reset2();
    8. void Reset3()const;
    9. private:
    10. int _year;
    11. int _month;
    12. mutable int _day;
    13. };

    definition.cpp文件 

    1. Date::Date(int year, int month, int day) {
    2. _year = year;
    3. _month = month;
    4. _day = day;
    5. }
    6. void Date::Print() const{
    7. cout << _year << "-" << _month << "-" << _day << endl;
    8. }
    9. void Date:: Reset1()const {
    10. _day = 1;
    11. _month = 2;
    12. _year = 1970;
    13. }
    14. void Date::Reset2() {
    15. _day = 1;
    16. _month = 2;
    17. _year = 1970;
    18. }
    19. void Date:: Reset3()const {
    20. this->_day++;
    21. }

     

     

     特性:

    const修饰的成员函数:实际上修饰的是this指针指向空间的内容不可被修改
    有了const修饰的成员函数,其this指针类型:const Date* const  (左定值,右定向)

    而普通的成员函数:可以修改成员变量 ,其this指针类型:Date* const

     

    例:

    1. int main() {
    2. Date d1(2022, 9, 9);
    3. d1.Print();
    4. d1.Reset2();
    5. d1.Print();
    6. return 0;
    7. }

      解析:d1是Date类型,可读可写,Reset函数可读可写,而Print函数仅可读,表明非const对象既可以调用const型成员函数,也可以调用非const型成员函数。 这是权限的平移和缩小。

     

    那么const对象既可以调用非const型成员函数吗?

             同样的,权限小的是不能调用权限大的!!! 

     

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

           不可以,若你把一个函数声明为const类型函数,那么就说明这个函数是只读的,不可修改,
    而非const成员函数是可读可写的。

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

            可以,外层函数类型Date* const:是可读可写的,而内层函数类型是const Date* const:只读
    外层可以修改也可以不修改,到底是否要修改,视情况而定。

    总结:

            到底要不要使用const去修饰成员函数,就看你函数中的变量需不需被修改,如果不希望被修改,则加上即可。

     

  • 相关阅读:
    创建Hibernate项目与实现一个例子(idea版)
    《机器学习核心算法》分类算法 - 朴素贝叶斯 MultinomialNB
    ArmSoM-RK3588编解码之mpp解码demo解析:mpi_dec_test
    现货黄金与黄金一样吗?
    Web服务器部署上线的踩坑流程回顾与知新
    Redis应用问题解决(缓存穿透、击穿、雪崩、分布式锁)
    2001. 可互换矩形的组数-快速排序
    数据结构栈的使用——马踏棋盘
    Django面对高并发现象时处理方法
    [Python]搭建虚拟环境与Django项目的创建(Windows)
  • 原文地址:https://blog.csdn.net/weixin_69283129/article/details/127805281
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号