此为错误代码:
#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()<<endl;
return 0;
}
const对象,对非const的普通成员函数不允许引用也不允许改变值;
此为第一种改法:
#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()<<endl;
return 0;
}
只要将“const C c(5);”的const去掉,变成非const的普通成员函数。非const的普通成员函数,可以引用也可以改变非const普通成员函数的值。
此为第二种改法:
#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()<<endl;
return 0;
}
改为“int getX()const{return x;}”,const对象可以引用const成员函数。
运行结果: