条款2:尽量用<iostream>而不用<stdio.h>

scanf和printf不是类型安全的,而且没有扩展性,而类型安全和扩展性正是C++的基石,scanf/printf的这些弱点正是操作符>>和<<的强项
 int i; Rational r;     // r 是个有理数 ...
 cin >> i >> r;         //>>和<<必须是可以处理Rational类型对象的重载函数
 cout << i << r;  //如果没有实现这样的函数,就会出错
   //编译器自己可以根据不同的变量类型选择操作符的不同形式
>>和<<在传递读和写的对象时采用的语法形式相同,所以不必象scanf那样死记一些规定,比如如果不是指针,必须加上地址符,而如果是指针,又要确定不要加上地址符
对于>>和<<,象int这样的固定类型和象Rational这样的自定义类型在读写时方式是一样的。而你用sacnf和printf可没这么轻松
但是,使用scanf/printf也有一些好处
有些iostream的操作实现起来比相应的C stream效率要低。但这不是对所有的iostream而言,只是一些特殊的实现
在标准化的过程中,iostream库在底层做了很多修改,所以对那些要求最大可移植性的应用程序来说,会发现不同的厂商遵循标准的程度也不同
iostream库的类有构造函数而<stdio.h>里的函数没有,在某些涉及到静态对象初始化顺序的时候,如果可以确认不会带来隐患,用标准C库会更简单实用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值