您的位置:首页 > 编程语言 > C语言/C++

Effective C++学习笔记:条款2:尽量用iostram而不用stdio.h

2008-01-15 21:13 363 查看
传统的C函数库中scanf和printf不是类型安全的,另外,scanf/printf系列函数把要读写的变量和控制读写格式的信息分开来,这都是很早的用法啦。iostream的cout和cin则相对高级的多!因为类型安全和扩展性是C++的基石,“《”和“》”也提供操作符重载来输出、输入用户自己定义的数据类型,另外,在传递读和写的对象时采用的语法形式也是相同的。

如:

classRational{
public:
Rational(intnumerator=0,intdenominator=1);

...

private:
intn,d;//分子,分母
friendostream&operator<<(ostream&s,constRational&);};ostream&operator<<(ostream&s,constRational&r){	s<<r.n<<'/'<<r.d;	returns;}


但是下列情况下会使用C库函数:

(1)有些iostream的操作实现起来比相应的Cstream效率要低,所以不同的选择会给你的程序有可能带来很大的不同。
(2)在标准化的过程中,iostream库在底层做了很多修改,所以对那些要求最大可移植性的应用程序来说,会发现不同的厂商遵循标准的程度也不同。

(3)iostream库的类有构造函数而里的函数没有,在某些涉及到静态对象初始化顺序的时候,如果可以确认不会带来隐患,用标准C库会更简单实用。

使用了#include,得到的是置于名字空间std下的iostream库的元素;如果使用#include,得到的是置于全局空间

的同样的元素。在全局空间获取元素会导致名字冲突,而设计名字空间的初衷正是用来避免这种名字冲突的发生。

使用了#include后面要接:usingnamespacestd;新的c++库舍弃了,你如果include它,编译器

会提示你找不到这个头文件。





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐