您的位置:首页 > 编程语言 > C语言/C++

[C++] const对象只能调用const方法的原因

2014-12-19 16:01 483 查看
首先,对象的方法内修改成员内容是通过this指针实现的。比如A->fun(); 实际上会在fun中传入对象A的this指针。

其次,const对象在调用方法的时候,只能提供const类型的this指针,准确的说是后const指针,不能修改指向内容的。因此const对象只能调用const方法。

实际上呢,会产生一个类型转换错误,具体如下:

#include <iostream>
using namespace std;

class A
{
public:
void fun();
void const_fun() const;
};

void A::fun()
{
cout << "fun" << endl;
}
void A::const_fun() const
{
cout << "const fun" << endl;
}

int main()
{
A a;
a.fun();
a.const_fun();
cout << "-----------------------------" << endl;
const A con_a;
//	con_a.fun();  // 'fun' : cannot convert 'this' pointer from 'const class A' to 'class A &'
con_a.const_fun();
return 0;
}


编译器给出的提示说的已经很清楚了'fun' : cannot convert 'this' pointer from 'const class A' to 'class A &'。

con_a.fun()这句代码,需要使用con_a作为this指针,并且需要的是一个class A &类型的this指针,但是con_a只能提供const class A&类型的this指针,所以这里会产生类型转换失败的提示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: