条款03:尽量使用const
让函数返回一个常量值:
class Rational{};
const Rational operator *(const Rational& lhs,const Rational& rhs);
(对象参数,最好用 引用 ,并用const )
Rational a,b,c;
if( a*b =c) 由于错误把 = = 写为= 如果没有返回 const 那么这个赋值就成立了。
const 成员函数
将const用于成员函数的目的,是为了确认const成员函数可以被const对象调用。
一个函数的参数是 const Rational & a, 那么a在函数体内只能调用类的const成员函数。
两个成员函数如果只是常量性不同,可以被重载。
int fun() const; int fun(); 是重载函数。
class TextBlock
{
public:
const char& operator[](std::size_t position) const
{ return text[position]; }
char & operator[](std::size_t position)
{ return text[position]; }
private:
std::string text;
};
void print(const TextBlock& ctb)
{
cout<
}
只要重载的不同版本 给出不同的返回值,就可以做不同的处理。
tb[0]='x' 可以返回 char&
ctb[0]='x' 不可以 返回 const char&
如果operator[] 返回的是char 而不是char& 那么 tb[0]='x'也是错的 因为 返回的是右值不可以被赋值的。
将类的属性 声明为 mutable int i;这种形式 在const函数中就可以改变这些属性了。
阅读(498) | 评论(0) | 转发(0) |