const对象的数据是否能被修改?

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的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值