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

const成员函数和const对象

时间:2018-02-26 23:24:21      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:函数   而不是   body   成员   const成员函数   return   表示   编译   ret   

从成员函数说起

在说const成员函数之前,先说一下普通成员函数,其实每个成员函数都有一个隐形的入参:T *const this。

1 int getValue(T *const this) 
2 {
3     return val;
4 }

const成员函数

声明形式是:int getValue() const;

编译器内部实现如下

1 int getValue(const T* const this) 
2 { 
3     return val; 
4 }

表示this指针指向的内容是不可改变的,所以当试图修改val时会编译报错。

const对象

当一个对象声明成const时,表示指向它的this指针也是const的了,变成const T *this。如果此时调用一个非const成员函数,如int getValue(),而不是int getValue() const,那么相当于把const T*this赋值给T *const this,当然会报错。所以这时候要添加一个const版本的int getValue() const,编译就能通过了。

1 T *this = const T *this;

当然普通非const对象调用const成员函数也是可行的,反之不行。

const成员函数和const对象

标签:函数   而不是   body   成员   const成员函数   return   表示   编译   ret   

原文地址:https://www.cnblogs.com/howo/p/8476236.html

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