C++为什么不提倡使用scanf和printf函数
2014-02-10 22:10
666 查看
Effective C++ 中文版
条款2 尽量使用<iostream> 而不用<stdio.h>
最重要的原因当然是C++提供了流对象‘>>’和‘<<’,它们代表了新观念。流对象能输出对象,而printf函数和scanf函数不能。此外,起码还有下面两个次要原因。
首先让我们观察一下printf函数和scanf函数的声明,它们分别是:int printf( char *, ...);
int scanf( char *, ...);
我们看到,除了第一个参数要求是char *以外,其余参数的类型不限,个数也不限。
从这一点能够看出,C语言对函数参数的数据类型是不做严格的检查的,但是C++语言却是要做严格的类型检查的,这与C++支持函数重载有关。
再者,在一个程序里,如果cin、cout和scanf、printf混合使用,系统不能保证他们的执行次序是正确的,
假如我们希望输出‘我吃’,也许输出的是‘吃我’。尽管C++提供了解决这个问题的途径,但是一般不提倡这样做。
相关文章推荐
- C++为什么不提倡使用scanf和printf函数
- 为什么 C++ 中提倡尽量避免使用宏 #define(转)
- c++中为什么不提倡使用vector<bool>(转)
- C++中我们为什么提倡使用内存池技术?
- 为什么在C++使用pthread_cre…
- 为什么Android系统需要使用C、C++和Java语言共同开发
- c++获取键盘输入cin、scanf使用详解
- UE4为什么使用C++替代UnrealScript?
- C++拷贝构造函数的参数为什么必须使用引用类型
- 【C++】C++中使用scanf printf
- 我们为什么要在C++中使用虚函数
- C/C++ 之 scanf的使用
- C++学习总结_为什么要使用指针
- 为什么游戏引擎大多选择使用 C++ 而不是 C 开发?
- 我们为什么要在C++中使用虚函数
- 为什么Android系统需要使用C、C++和Java语言共同开发
- C++: explicit的适用场合以及为什么要使用explicit
- c++为什么使用拷贝构造函数?
- C++ 为什么要使用#ifdef __cplusplus extern "C" { #endif
- 为什么C/C++语言使用指针