Effective C++ Item 3 尽可能使用const

来源:互联网 发布:java中反射的概念 编辑:程序博客网 时间:2024/06/05 09:15

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie


const 出现在*左边指const data,出现在*右边指const pointer
char greeting[] = “Hello”;char *p = greeting; //non-const pointer, non-const dataconst char *p = greeting; //non-const pointer, const datachar *const p = greeting;//const pointer, non-const dataconst char *const p = greeting        //const pointer, const data


声明常量迭代器和所指物是常量的迭代器
std::vector<int> vec;const std::vector<int>::iterator iter = vec.begin();            //iter的作用像个T *const*iter = 10                              //ok. 改变iter所指物++iter;                                          //error. iter是constconst std::vector<int>::const_iterator cIter = vec.begin();     //cIter的作用像个const T **cIter = 10                                                     //error. *cIter是const++cIter;                                                        //ok. 改变cIter


将返回值声明为const,避免它被当作左值,成员函数声明为const,确认该成员函数可作用于const 对象
class Rational {…};const Rational::operator *(const Rational *lhs, const Rational *rhs) const
参数声明为const,避免它修改
成员函数声明为const,确认该成员函数可作用于const 对象(const对象只能调用const 成员)
0 0