首页 > 代码库 > const成员函数
const成员函数
effecticv C++第三条就说到,在设计类时要尽量使用const,当函数不会改变类的成员是,通常都会将该函数声明为const,但是const函数内部如何实现的呢?
首先我们应该从C++类的成员函数实现说起。
1 class temp2 {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成员函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。