Chinaunix首页 | 论坛 | 博客
  • 博客访问: 46114
  • 博文数量: 25
  • 博客积分: 930
  • 博客等级: 准尉
  • 技术积分: 257
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-25 08:59
文章分类

全部博文(25)

文章存档

2010年(6)

2009年(18)

2008年(1)

我的朋友
最近访客

分类: C/C++

2009-04-20 11:24:20

条款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) |
给主人留下些什么吧!~~