概述:

函数名后加const使类成员函数不能修改类内成员!

mutable可以突破const限制!

相信大家都见过在函数前面加const的情况,即修饰函数的返回值!

那么在函数后面加const,比如下面呢?

那么在函数后面加const的作用是什么呢?

首先,我们要确认一点。在函数后面加const只能在类的成员函数中实现!普通的函数是无法进行这样的操作的!如下图所示:

那么在类的成员函数的函数名后面加const的作用其实是:

表示函数不可以修改类中的成员!相当于这个函数是一个只读函数!一旦我们想要改变类成员的值便会报错!这样的好处在于:1、提高了代码的可读性,别人看到你这个就知道你这个函数没有改变类成员。2、提高代码的可靠性,即前面说的若想改变改变则会报错!

示例:

我们在类中定义这样一个只读函数print_age是没问题的,而一旦我们想要改变成员变量age的值便会报错:

如果我们想克服这种限制,可以选择在想修改的成员变量前用mutable来修饰表示是可修改的!

在函数后面加const相关推荐

  1. [Reprint]C++函数前和函数后加const修饰符区别

    c++中关于const的用法有很多,const既可以修饰变量,也可以函数,不同的环境下,是有不同的含义.今天来讲讲const加在函数前和函数后面的区别.比如: 01 #include<iostr ...

  2. C++之函数后面加const

    一.const起到什么作用 const声明该函数为只读函数,不会修改任何数据成员. 1.可提高程序的可读性. 2.提高程序的健壮性. 二.使用示例 #include <iostream> ...

  3. C++: C++函数声明的时候后面加const

    C++: C++函数声明的时候后面加const 转自:http://blog.csdn.net/zhangss415/article/details/7998123 非静态成员函数后面加const(加 ...

  4. 2020-11-11 C++函数后面加“:”的含义

    C++函数后面加":"的含义 2021.6.22增加,这是构造函数特有的语法. 1.c++成员函数后面跟":"表示的是赋值,这是c++的特性 如下: TEST( ...

  5. 【Android 逆向】Dalvik 函数抽取加壳 ( 类加载流程分析 | Class.cpp#findClassNoInit 函数 | DexFile.cpp#dexFindClass 函数分析 )

    文章目录 前言 一.Class.cpp#dvmDefineClass 函数分析 二.Class.cpp#findClassNoInit 函数分析 三.DexFile.cpp#dexFindClass ...

  6. 【Android 逆向】Dalvik 函数抽取加壳 ( 类加载流程分析 | native 函数查询 | dalvik_system_DexFile.cpp#defineClassNative 函数 )

    文章目录 前言 一.查询 defineClassNative 函数 二.dalvik_system_DexFile.cpp#Dalvik_dalvik_system_DexFile_defineCla ...

  7. reactjs通过lazy函数配合import函数动态加载路由组件

    路由组件的lazyLoad //1.通过React的lazy函数配合import()函数动态加载路由组件 ===> 路由组件代码会被分开打包const Login = lazy(()=>i ...

  8. c++中Const,Const函数,Const变量,函数后面的Const

    看到const 关键字,C++程序员首先想到的可能是const 常量.这可不是良好的条件反射.如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮.const 更大的魅力是它可以修饰函数的 ...

  9. Const用法总结:Const,Const函数,Const变量,函数后面的Const (转)

    看到 const 关键字, C++ 程序员首先想到的可能是 const 常量.这可不是良好的条件反射.如果只知道用 const 定义常量,那么相当于把火药仅用于制作鞭炮. const 更大的魅力是它可 ...

最新文章

  1. HDOJ 1016 HDU 1016 Prime Ring Problem ACM 1016 IN HDU
  2. mysql数据库表迁移
  3. [CF]Round514
  4. 双目相机--双目视差与深度距离关系推导详解
  5. LeetCode 791. 自定义字符串排序(map)
  6. kvmweb管理工具_KVM的web管理界面
  7. NCRE四级网络工程师考题详解----目录分解法
  8. 零基础能不能学习web前端开发?
  9. BZOJ1018 堵塞的交通(线段树)
  10. prototype的相关注意点
  11. 亲历阿里巴巴五轮面试分享
  12. 怎样快速开发属于自己的微信小程序?
  13. CREATE DATABASE 或 ALTER DATABASE 失败,因为结果数据库的累计大小将超出每 数据库 为 4096 MB 的
  14. android 手机红外遥控器
  15. No 和 Not 的区别
  16. 爬虫练习-爬取《斗破苍穹》全文小说
  17. Jetpack学习-Paging
  18. 东莞塑料是四大工程材料
  19. 一休哥的PowerBI学习之路-可控的视觉筛选器
  20. 构建 AWS AMI 镜像(EC2 Image Builder + Terraform)

热门文章

  1. 在计算机中使用的键盘是连接,无线键盘怎么连电脑使用_无线键盘怎么安装-win7之家...
  2. 平面设计与设计与到底有什么区别?
  3. Springboot----项目整合微信支付(引入延迟队列实现订单过期取消以及商户主动查单)
  4. 梦幻新任务副本系统,跑环日常副本成就任你选!
  5. dejavu sans_新的Google徽标真的看起来像Comic Sans吗?
  6. C语言基本数据类型及其范围
  7. 人大-鸿翼数字档案联合实验室成立 服务档案数字化转型
  8. 云渲染竟然可以让电影提前上映!
  9. android 重新绘制界面,基于Android Q:华为最新EMUI10界面曝光,图标重绘继续优化...
  10. java、jvm与.net