C++中函数后面加const

在函数后加const的意义:

我们定义的类的成员函数 中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值。如果把不改变数据成员的函数都加上const关键字进行标识,显然,可提高程序的可读性。其实,它还能提高程序的可靠性,已定义成const的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。 const成员函数和const对象 实际上,const成员函数还有另外一项作用,即常量对象相关。对于内置的数据类型,我们可以定义它们的常量,用户自定义的类也一样,可以定义它们的常量对象。
  
1、非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误)
2、表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中,
任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this指针的const引用);
3、唯一的例外是对于mutable修饰的成员
加了const的成员函数可以被非const对象和const对象调用
但不加const的成员函数只能被非const对象调用

char getData() const{
return this->letter;

}

c++ 函数前面和后面 使用const 的作用:

前面使用const 表示返回值为const

后面加 const表示函数不可以修改class的成员

C++中函数后面加const相关推荐

  1. 在函数后面加const

    概述: 函数名后加const使类成员函数不能修改类内成员! mutable可以突破const限制! 相信大家都见过在函数前面加const的情况,即修饰函数的返回值! 那么在函数后面加const,比如下 ...

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

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

  3. python内函数名加括号和不加括号的区别,python中 函数名加括号与不加括号

    Maven之自定义archetype生成项目骨架(一) Maven之自定义archetype生成项目骨架(一) 标签: mavennexus插件 2015-07-15 16:40 2443人阅读 评论 ...

  4. php中函数前加符号的作用分解

    php变量前面加&符号是什么意思就不用多说了,大家都在用,就是两个变量同时指向一个地址而已,那么,php函数前面加&符号的意义又是什么呢?下面先上两个演示代码,然后再做解释. func ...

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

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

  6. js 中 函数内部加 return false 的作用

    有两个作用,禁止向上冒泡和禁止默认行为. 请先看以下代码: <div id="box"><div id="txt">123</di ...

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

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

  8. java中const_Java如何实现const

    展开全部 const是constant的缩写,"恒定不变"的意思.被const修饰的东西都受到强制保护,可以预防意外的变动,能提62616964757a686964616fe59b ...

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

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

  10. 在C++中,函数名前的const和函数名后的const的区别

    首先要知道函数名后面加const只能用于成员函数. int const func(); //合法,相当于const int func(); int func2() const; //非法,对函数的co ...

最新文章

  1. python linux arm_[Python]python for ARM/LINUX
  2. 石墨变为石墨烯的方法
  3. vCloud Automation Center (vCAC) 6.0 (一)
  4. Cell子刊:MRI有助于揭示睡眠之谜
  5. mysql双机热备份的实现步骤
  6. java自定义异常报错
  7. [css] 你有用过哪些css框架?说说它们的特点
  8. linux服务器搭建_Linux下搭建FTP服务器笔记
  9. java读写mysql数据库_Java读写MySQL数据库小实例
  10. java中修改对象类的数据_Java中创建对象的六个步骤 细分后(new关键字)对象头详细介绍...
  11. Linux系统调用怎么和内核或底层驱动交互的 inode struct file
  12. java 加密使长度变短
  13. 神经网络pid控制原理框图,神经网络pid控制原理图
  14. 互联网面试六大常见问题及应对技巧,2021不再入坑!
  15. redis实现分布式锁的几种方式
  16. mongodb连接不上的问题Exception thrown during connection pool background maintenance task
  17. jupyter notebook的安装与启动
  18. g711u g711a 格式相互转换
  19. 易语言源码 VX多开 思路+源码
  20. SpringCloud—笔记(三)高级篇

热门文章

  1. Opencv 学习笔记(二)
  2. 八戒,别以为你站在路灯下就是夜明猪了
  3. thinkPHP集成workman扩展
  4. Android扫一扫 有仿微信版
  5. staring mysql.the_mysql 启动异常失败 Starting MySQL..The server quit without updating PID file
  6. COIL:结合稠密检索和词汇匹配的更高效检索模型
  7. php实现智能音箱播放内容,智能音箱应用分析 智能音箱五大功能介绍
  8. Windows 下部署 Seafile 服务器
  9. BT-3の蓝牙技术原理のBT协议の蓝牙核心协议の链路管理协议(LMP)
  10. 离散数学 (上)小结