03:尽可能使用const

博客主要介绍了C++中const的使用。const在星号左右位置不同,含义不同;可令函数返回常量值;用于成员函数能使类接口易理解,操作const对象成为可能,且常量性不同的成员函数可重载。还提到声明const可助编译器查错,编写时应注重概念上的常量性,可避免代码重复。

1.const出现在星号左边,表示被指物是常量;如果出现在星号右边,表示指针自身是常量;如果出现在星号两边,表示被指物和指针两者都是常量

void f1(const int *ip);
void f2(int const *p);
//这两个函数接受的参数类型一样,都表示一个指向常量的指针

2.令函数返回一个常量值

class Rational{...};
const Rational operator* (const Rational&,const Rational &rhs);

Rational a,b,c;
(a*b) = c;//错误,因为返回的值是const,不能被赋值;加上const也可以避免发生这样的错误
if(a*b = c){...}//少写了一个=,返回值类型为const将可以避免这个错误

3.const成员函数

  • 将const用于成员函数的目的:使类接口比较容易被理解,可以知道那个函数可以改动对象内容哪个不行;使操作const对象成为可能。
  • 两个成员函数如果只是常量性不同,可以被重载。如下代码:
class TextBlock
{
public:
...
	const char& operator[](std::size_t position)const
	{
		return text[position];
	}
	char& operator[](std::size_t position)
	{
		return Text[positon]
	}
private:
	std::string text;
};
TextBlock tb("hello")
cout<<tb[0];//调用char& operator[](std::size_t position)
const TextBlock ctb("World");
cout<<ctb[0];//调用const char& operator[](std::size_t position)

请记住

  • 将某些东西声明为const可帮助编译器侦测出错误用法。const可被施加于任何作用域内的对象、函数参数、函数返回类型、成员函数本体。
  • 编译器强制实施bitwise constness,但你编写程序时应该使用“概念上的常量性”。
  • 当const和non - const成员函数有着实质等价的实现时,令non-const版本调用const版本可避免代码重复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值