#include<iostream>
#include<stdlib.h>
using namespace std;
class C
{
private:
int x;
public:
C(int x)
{
this->x = x;
}
int getX()
{
return x;
}
};
int main()
{
const C c(5);
cout<<c.getX();
return 0;
}
错误原因:
//const a &aa相当于一个const对象,由于const对象在调用成员函数的时候,会将this指针强行转换为const this,所以它将无法找到相应的const show()函数,并且编译器也无法将一个const的对象转化为一个普通对象来调用这个普通的show()方法,所以就会产生编译错误。
改错一:
#include<iostream>
#include<stdlib.h>
using namespace std;
class C{
private:
int x;
public:
C(int x)
{
this->x=x;
}
int getX()
{
return x;
}
};
int main()
{
C c(5);
cout<<c.getX();
system("PAUSE");
return 0;
}
改错二:
#include<iostream>
#include<stdlib.h>
using namespace std;
class C{
private:
int x;
public:
C(int x) {this->x=x;}
int getX() const {return x;}
};
int main(){
const C c(5);
cout<<c.getX();
system("PAUSE");
return 0;
}
运行结果: