C++常函数与常对象用法

13 篇文章 0 订阅

C++常函数与常对象

const修饰成员函数

1.用const修饰成员函数时,const修饰this指针指向的内存区域,成员函数体内不可以修改本类中的任何普通成员变量。
2.当成员变量类型前用mutable修饰时可以修改。

class Test
{
public:
	Test(int num, int id)
	{
		this->num = num;
		this->id = id;
	}
	//常函数:函数的()后面加const,该函数为常函数
	void print()const
	{
		//id = 10;//错误常函数不能修改普通的成员变量
		//const修饰的时this指针指向的中间中的变量,所以不能修改里面的值
		//Test* const this;    //this指针
		//const Test* const this;//常函数修饰的
		s = 10;//前面加mutable关键字修饰的变量可以在常函数中修改
		cout << "s = " << s << endl;
	}

	int num;
	int id;
	mutable int s;//mutable修饰成员变量
};

const修饰对象

1.常对象只能调用const的成员函数
2.常对象可以访问const修饰的修饰的数据成员,也可访问普通数据成员,但不能修改,除非成员用mutable修饰。

//类与上面定义的相同
class Test
{
public:
	Test(int num, int id)
	{
		this->num = num;
		this->id = id;
	}
	//常函数:函数的()后面加const,该函数为常函数
	void print()const
	{
		//id = 10;//错误常函数不能修改普通的成员变量
		//const修饰的时this指针指向的中间中的变量,所以不能修改里面的值
		//Test* const this;    //this指针
		//const Test* const this;//常函数修饰的
		s = 10;//前面加mutable关键字修饰的变量可以在常函数中修改
		cout << "s = " << s << endl;
	}

	int num;
	int id;
	mutable int s;//mutable修饰成员变量
};
//************************************************
int main()
{
	//在数据类型前面加const,让对象成为常对象
	const Test t(1,1);//常对象
	//t.num = 10;//常对象不能改变普通的成员变量的值
	//t.id = 10;//也是错误的
	t.print();//常函数可以调用常对象
	t.s = 100;//常对象可以修改mutable修饰的成员变量

	Test t1(2,2);
	t1.print();//普通函数也可以调用常函数
}

总结
1.常函数的括号后面加const关键字,这个函数就是常函数
2.常函数不能修改普通成员变量
3.const修饰的是this指针指向的空间的变量,所以不能改变
4.只有mutable修饰的成员变量在常函数中可以修改
5.在实例化对象时加上const,让对象变为常对象
6.常对象可以调用常函数
7.常对象可以修改mutable修饰的成员变量
8.普通对象也可以调用常函数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值