const对象的数据是否能被修改?
#include<iostream>
using namespace std;
//const对象的数据是否能被修改?
class demo_bro
{
public:
int a;
demo_bro():a(10),b(0) {
};
void change_num(int value);
int get_num(){
return this->b;
}
private:
int b;
};
void demo_bro::change_num(int value)
{
this->b = value;
}
int main()
{
const demo_bro broA;
cout << "a = " << broA.a << endl;
broA.a = 100; //error
cout << "after change, a = " << broA.a << endl;
return 0;
}
const对象中的数据也是const的,即使是public,也不允许被赋值
#include<iostream>
using namespace std;
//const对象的数据是否能被修改?
class demo_bro
{
public:
int a;
demo_bro():a(10),b(0) {
};
void change_num(int value) const;
int get_num() const{ //此处加const报错一消除
return this->b;
}
private:
int b;
};
void demo_bro::change_num(int value) const //添加const之后运行成功,否则报错二
{
//this->b = value;
}
int main()
{
const demo_bro broA;
cout << "b = " << broA.get_num() << endl;
broA.change_num(100);
cout << "after change, b = " << broA.get_num() << endl;
return 0;
}
编译还还报了个错:【报错一】
passing 'const demo_bro' as 'this' argument discards qualifiers [-fpermissive]
解决:
在调用的或者说报错的函数后面加上const,报错解决
解决上面报错后继续报错:【报错二】
【】
结论:
1、const对象只要是调用的不是以const后面结尾的函数都会报错
2、const对象只能调用类中的const结尾的方法
3、const对象对象的数据不允许被更改
4、且这个对象如果要引用也必须要是const的