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

const成员函数

时间:2016-10-02 12:52:43      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:

 

    effecticv C++第三条就说到,在设计类时要尽量使用const,当函数不会改变类的成员是,通常都会将该函数声明为const,但是const函数内部如何实现的呢?

    首先我们应该从C++类的成员函数实现说起。

1 class temp
2 {
3 public:
4     void fun1();
5     void fun2() const;
6 }

    在类temp中,函数fun1()是非const的,函数fun2()是const类型的。

    新建一个类的对象(非const) temp a;

    a.fun1()在调用的时候,为了保证每个成员函数都能调用到它的对象,编译器会将对象a的地址传递给函数的隐式形参this,也就是a.fun1(&a)。每个成员函数都会有个隐式的参数this指针。

    对象是非const类型的时候,我们即可以调用const类型的成员函数,可以调用非const类型的成员函数。

    但是当新建一个类的对象(const型)const temp b;

    a.fun1()在调动时,一个const temp*传递给隐式形参this,然后this的类型是常量指针,即temp* const,我们不能将一个指针常量赋值给常量指针,因此对于const类型的对象不能调用非const的成员变量。而const的型的成员变量,会在隐式形参this的前面加上const,也就是const temp* const this,它可以接受const temp*的参数。因此const类型的对象可以调用const类型的成员变量。

 

const成员函数

标签:

原文地址:http://www.cnblogs.com/liuteng/p/5927369.html

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