Chinaunix首页 | 论坛 | 博客
  • 博客访问: 233473
  • 博文数量: 69
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 570
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-13 16:57
文章分类

全部博文(69)

文章存档

2011年(1)

2010年(5)

2009年(63)

我的朋友

分类: C/C++

2009-08-03 18:28:40

条款2:尽量用而不用

int i;
Rational r;// r 是个有理数
 
...
 
cin >> i >> r;
cout << i << r;

 

 

你所写的表示有理数的类的代码可能象下面这样:

class Rational {
public:
        Rational(int numerator = 0, int denominator = 1);
        
        ...
        
private:
        int n, d;// 分子,分母
 
        friend ostream& operator<<(ostream& s, const Rational& );
};
 
ostream& operator<<(ostream& s, const Rational& r)
{
        s<< r.n << '/' << r.d;
        return s;
}

//////////////////////////////////////

我确实说的是而非。从技术上说,其实没有这样的东西——标准化委员会在简化非C标准头文件时用取代了它。他们这样做的原因在进行了解释。还必须知道的是,如果编译器同时支持 ,那头文件名的使用会很微妙。例如,如果使用了#include , 得到的是置于名字空间std()下的iostream库的元素;如果使用#include ,得到的是置于全局空间的同样的元素。在全局空间获取元素会导致名字冲突,而设计名字空间的初衷正是用来避免这种名字冲突的发生。还有,打字时少两个字,这也是很多人用它的原因。:)

阅读(1536) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~