码迷,mamicode.com
首页 > 其他好文 > 详细

const修饰类的成员函数

时间:2015-10-04 06:45:47      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:const修饰类的成员函数



《Effective C++》里面说,尽量使用const,const修饰变量一般有两种方式:const T *a,或者 T const *a,这两者都是一样的,主要看const位于*的左边还是右边,这里不再赘述,主要来看一下当const修饰类的成员函数时,成员函数有什么特点。


类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。

在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const。所以 const 关键字对成员函数的行为作了更加明确的限定:有 const 修饰的成员函数(指 const 放在函数参数表的后面,而不是在函数前面或者参数表内),只能读取数据成员,不能改变数据成员;没有 const 修饰的成员函数,对数据成员则是可读可写的。

除此之外,在类的成员函数后面加 const 还有什么好处呢?那就是常量(即 const)对象可以调用 const 成员函数,而不能调用非const修饰的函数。


注意:两个成员函数如果只是常量性不同,是可以被重载的

例如:

class A

{

public:

    void f()

    {

        cout<<"non const"<<endl;

     } 

    void f() const

    {

        cout<<" const"<<endl;

     } 

};

微软笔试第二题正是考这个,const 对象调用f() const,非const对象调用 f()


const修饰类的成员函数

标签:const修饰类的成员函数

原文地址:http://10622551.blog.51cto.com/10612551/1700057

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!