const修饰类的成员函数
2015-07-28 20:41
267 查看
《Effective C++》里面说,尽量使用const,const修饰变量一般有两种方式:const T a,或者 T const *a,这两者都是一样的,主要看const位于的左边还是右边,这里不再赘述,主要来看一下当const修饰类的成员函数时,成员函数有什么特点。
类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。
在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const。所以 const 关键字对成员函数的行为作了更加明确的限定:有 const 修饰的成员函数(指 const 放在函数参数表的后面,而不是在函数前面或者参数表内),只能读取数据成员,不能改变数据成员;没有 const 修饰的成员函数,对数据成员则是可读可写的。
除此之外,在类的成员函数后面加 const 还有什么好处呢?那就是常量(即 const)对象可以调用 const 成员函数,而不能调用非const修饰的函数。
注意:两个成员函数如果只是常量性不同,是可以被重载的
例如:
微软笔试第二题正是考这个,const 对象调用f() const,非const对象调用 f()
from:
http://blog.sina.com.cn/s/blog_628571e60101e0vb.html
类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。
在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const。所以 const 关键字对成员函数的行为作了更加明确的限定:有 const 修饰的成员函数(指 const 放在函数参数表的后面,而不是在函数前面或者参数表内),只能读取数据成员,不能改变数据成员;没有 const 修饰的成员函数,对数据成员则是可读可写的。
除此之外,在类的成员函数后面加 const 还有什么好处呢?那就是常量(即 const)对象可以调用 const 成员函数,而不能调用非const修饰的函数。
注意:两个成员函数如果只是常量性不同,是可以被重载的
例如:
[code]class A { public: void f() { cout<<"non const"<<endl; } void f() const { cout<<" const"<<endl; } };
微软笔试第二题正是考这个,const 对象调用f() const,非const对象调用 f()
from:
http://blog.sina.com.cn/s/blog_628571e60101e0vb.html
相关文章推荐
- JS判断是什么设备是什么浏览器-主要用移动页面开发
- 2015 Multi-University Training Contest 3 hdu 5316 Magician
- OpenStack Icehouse私有云实战部署 推荐
- 利用css写响应式布局
- IOS开发笔记 之 socket链接 与 http链接的区别
- HDU 1159 Common Subsequence 公共子序列
- GTK常用控件之按钮( GtkButton )
- hdoj1408盐水的故事
- 暑假集训-个人赛第三场
- OC09 -- 内存管理
- Android三种实现自定义ProgressBar的方式介绍
- poj - 2506 Tiling--递推
- hdu 5317 RGCDQ
- 王家林亲授《DT大数据梦工厂》大数据实战视频 Scala 深入浅出实战经典 - 第71讲
- TP框架中,对数据的过滤函数
- 剑指offer面试题11——数值的整数次方
- SYS_CONNECT_BY_PATH函数用法 ORACLE
- 最短路(floyd)
- hdu5316(2015多校3)--Magician(线段树+dp)
- MSDN中关于#pragma once的译文