条款三 尽可能的使用const
const 的主要用途可以分为三个方面:
1.用于修饰指针
2.const迭代器
3.函数声明时的应用(返回值 参数 函数自身)
用于修饰指针 能够区分一下代码:
char greeting[]="Hello";
char* p=greeting;
const char* p=greeting;
const char* const p =greeting;
用于const迭代器的意思就是vector<int>::const_iterator it; it不能修改容器的值。
用于函数声明时的应用:
1.const 成员函数,对于const成员函数我们必须明白的几个点 :
带const与不带const 的同名同参函数能够构成重载。
const 成员对象只能调用const成员函数,不能调用non-const成员函数。
const成员函数不能修改对象内任意non-static成员变量。
以一段代码来解释const成员函数的作用:
class TextBook
{
public:
const char& operator[](size_t position) const
{
return text[position];
}
char& operator[](size_t position)
{
return text[position];
}
private:
string text;
}
TextBook tb("Hello");
tb[0]='x';//调用的是非const版本的函数
const TextBook tb("Hello");//不能对其调用tb[0]='x'
上面同时阐述了,返回值是const的作用。
当我们在const成员函数中必须修改成员变量的时候,编译器就会报错,但是如果我们非要修改那种变量,那么变量前面我们要加mutable关键词。