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

本文探讨了C++中的iostream与传统C库中的scanf/printf的区别,包括类型安全、扩展性等方面的优势,同时也指出了在某些场景下C库函数的适用性和优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

如:

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库函数:
(1)有些iostream的操作实现起来比相应的C stream效率要低,所以不同的选择会给你的程序有可能带来很大的不同。
(2)在标准化的过程中,iostream库在底层做了很多修改,所以对那些要求最大可移植性的应用程序来说,会发现不同的厂商遵循标准的程度也不同。
(3)iostream库的类有构造函数而里的函数没有,在某些涉及到静态对象初始化顺序的时候,如果可以确认不会带来隐患,用标准C库会更简单实用。
使用了#include , 得到的是置于名字空间std下的iostream库的元素;如果使用#include ,得到的是置于全局空间
的同样的元素。在全局空间获取元素会导致名字冲突,而设计名字空间的初衷正是用来避免这种名字冲突的发生。
使用了#include   后面要接:using namespace std;新的c++库舍弃了,你如果include它,编译器
会提示你找不到这个头文件。
 
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值