条款03 尽可能使用const

C++ const关键字详解
本文详细解析了C++中const关键字的应用,包括如何利用const约束对象以获得编译器的帮助,const成员函数的特点及限制,以及如何通过技巧避免代码重复等问题。

一、概述

使用const约束对象:可以获得编译器的帮助(指出相关出错的地方)

const与成员函数:const重载、转型、避免代码重复

 

二、细节

1. 为什么有些函数要返回const对象(看上去没必要)?

返回const对象:a * b = c;  //operator*()函数返回一个const对象,故该表达式错误

补充:我们的本意或许是a * b == c,此时返回const是没影响的,故返回const可以预防“没意思的赋值动作”

2. const成员函数不能避免对象被更改的情况

mutable成员变量可以更改,即使在const成员函数内

3. 两个成员函数因const相互重载,而函数体内代码重复

我们可以令non-const版本调用const版本,来避免代码重复

class A {
public:
	const char &operator[](size_t pos) const
	{
		...
		return text[pos];
	}
	char &operator[](size_t pos)
	{
		return const_cast<char&>(static_cast<const A&>(*this)[pos]);
	}
}; 

  

 

转载于:https://www.cnblogs.com/xzxl/p/7845645.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值