问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用const声明函数有什么用???

发布网友 发布时间:2022-05-14 04:16

我来回答

5个回答

热心网友 时间:2024-02-23 21:45

别人问起,不能简单说const表示常数,这样会让别人觉得很外行。或许可以说是只读,其实也不完全正确。务必要弄清楚一下几个定义的含义:

const int a; //a是一个常整型数
int const a; //a是一个整型常数
const int *a; //a是一个指向常整型数的指针,从这里可以看出整型数不可以修改,但指针可以。
int * const a; //a是一个指向整型数的常指针,整型数可以修改,指针不能修改。
int const * a const; //a是一个指向常整型数的常指针。

如果能正确回答这些问题,那么他就给我留下了一个好印象。顺带提一句,也许你可能会问,即使不用关键字 const,也还是能很容易写出功能正确的程序,那么我为什么还要如此看重关键字const呢?我也如下的几下理由:
1). 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)
2). 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
3). 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。

热心网友 时间:2024-02-23 21:45

一楼的有点答非所问,我来跟你简单的说说吧,const修饰符能修饰类的成员函数而不能修饰普通的自定义函数,类的成员函数加上了const修饰符后它用两个作用,1:在该函数内不允许对类的私有数据成员进行修改,2:当声明了一个const的该类对象时,该对象只能调用该类的const成员函数而不能调用非const成员函数.如果声明一个非const的该类对象,该对象既可以调用const成员函数也可以调用非const成员函数.

热心网友 时间:2024-02-23 21:46

楼上不知道哪里复制来一堆牛头不是很对马嘴的答案。。。。。。

const声明函数就是表明这个函数不会对类的成员变量进行修改,所以如果有常引用或者常指针指向这个类的对象,就可以调用const 声明的函数,没有const的不能被调用。

理解到这里一般就够了,如果你还想知道更多,去搜搜mutable关键字在c++中的作用。

参考资料:很简单的问题,头脑中随时有货

热心网友 时间:2024-02-23 21:46

2L的回答基本正确,但不到位。
因为回答过这个问题,就不复制粘贴了,较详细的说明和举例如下:
http://zhidao.baidu.com/question/172084740.html。
几个要点:
1.const修饰的函数只能是非静态成员函数。
2.语义:const修饰的函数具有常量语义。const成员函数不能修改对象的成员(特别地,要注意delete不算这里的“修改”),除非这个成员的定义中被mutable修饰。
3.const修饰的对象以及const指针或引用指向的对象都无法调用非const修饰的成员函数。
// xrhigh 回答中的“私有数据成员”的“私有”是多余的。不要把访问权限控制掺和到这个问题中来。
====
[原创回答团]

参考资料:原创

热心网友 时间:2024-02-23 21:47

支持二楼的回答!!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
问一卡通网上转账还款问题 招行一卡通可以通过网银转账到招行存折吗 美菱洗衣机e3是什么故障 美菱洗衣机显示圆圈锁是什么意思? 鲁迅的老家在哪里 鲁迅老家是哪里呀 什么是小额贴息贷款 我是05年申请姐妹纸移民美国的,请问几年排到 电脑哪个键输网址符号的请问电脑输入网址时怎么输入4747符号 电脑怎么设置使用http11怎么把自己的电脑设置成Http代理服务器_百度知 ... const在这里是什么意思?什么功能? const在c++里的用法??? Java的const怎么用 在C++中的const到底有几种用途? c++中Const 用法?什么时候需要用const? Const放在类成员函数后有什么用? Con 两个机箱可以用一个显示器吗 总结C++中const的用法 C++ const 用法 VB中const用法 有谁可以详细的讲讲 const 作用和用法 c++中const是怎么使用的? 电脑开机就花屏 冬草莓出来了,想带点回家,一晚上火车到,如何包装,带到家保障草莓不坏。谢谢 关于const的用法 荣耀8青春版有谁换过电池吗 我老公玩游戏200兆的移动宽带速度快吗? oppoa3和oppoa9哪个更找出? 云南山歌《爱需要等待》的视频 什么安防监控软件(采集卡)的动态录像功能好。灵敏度高。急急急急急急急!!!! 云南山歌小伙就是人来疯是什么歌 交行信用卡刷卡金在福州哪个超市可以用啊?能给我具体超市地址和列表吗? 这种情况能办交通银行信用卡吗,我在福州 交通银行信用卡已经审批通过了,还要几天能到福州 我就接过一次电话,都没有短信之类的 问一下,我想办张交通的卡可我是外地的身份证可以在福州办信用卡吗? 交通银行信用卡被盗刷,本人在福州,卡在自己身上,却在深圳被盗刷14000元,已报警挂失,怎么办? 沃尔玛购物广场福州大利嘉分店办理的交行信用卡是哪个支行的 比亚迪营口油4S店吗 营口或者大石桥有卖Byd的么?贷款可以么怎么还,上班族需要什么?要f0谢谢,... 大连比亚迪4S店有几家?都在哪里? 福州交通信用卡编号为XN75823236044的到哪里了 大连比亚迪4S店 老僧入定是怎么回事 小米盒子有没有自带片库? 老什么定什么成语? 对联 老僧入定,波澜 带僧的成语 常熟有几家比亚迪4s店在什么地方 谢谢 什么僧什么定的成语有哪些? 请问成都有几家比亚迪4S店?? 同一代i5i7仅论玩游戏而言,有多大区别?