Why not use printf() in C++(为什么不在C++中使用printf())
问题描述
我们中的许多人在学习使用构造函数和析构函数之前很久就学会了使用printf()。因此,当切换到C++时,许多人会坚持使用printf()作为控制台输出。
有时您可以听到:
printf()不好,您应该改用cout <<,因为它是C++
放弃使用printf()并切换到cout <<有什么好处?
推荐答案
C++ faq说明:
[15.1]为什么要使用
提高类型安全性、减少错误、允许可扩展性并提供可继承性。 printf()可以说没有被破坏,尽管scanf()容易出错,但它可能是合适的,但是两者在C++I/O的功能方面都是有限的。C++I/O(使用<;<;and>>)相对于C(使用<iostream>而不是传统的<cstdio>?printf()和scanf())。
更具类型安全性:使用
<iostream>,编译器静态地知道I/O对象的类型。相反,使用"%"字段动态计算类型。较不容易出错:使用
<iostream>,不存在必须与I/O的实际对象一致的冗余"%"令牌。删除冗余消除了一类错误。可扩展性:C++
<iostream>机制允许在不破坏现有代码的情况下I/O新的用户定义类型。想象一下,如果每个人都同时向printf()和scanf()添加新的不兼容的"%"字段?!可继承:C++
/li><iostream>机制由std::ostream和std::istream等真实类构建而成。与<cstdio>的FILE*不同,这些是真实的类,因此是可继承的。这意味着您可以拥有其他用户定义的内容,它们的外观和行为类似于流,但它们可以做您想做的任何奇怪和奇妙的事情。您可以自动使用由您甚至不认识的用户编写的无数行I/O代码,并且他们不需要知道您的"extended stream"类。
这篇关于为什么不在C++中使用printf()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为什么不在C++中使用printf()
基础教程推荐
- C++结构和函数声明。为什么它不能编译? 2022-11-07
- 如何检查GTK+3.0中的小部件类型? 2022-11-30
- 我有静态或动态 boost 库吗? 2021-01-01
- 这个宏可以转换成函数吗? 2022-01-01
- 常量变量在标题中不起作用 2021-01-01
- 如何将 std::pair 的排序 std::list 转换为 std::map 2022-01-01
- 静态库、静态链接动态库和动态链接动态库的 .lib 文件里面是什么? 2021-01-01
- 在 C++ 中计算滚动/移动平均值 2021-01-01
- 如何通过C程序打开命令提示符Cmd 2022-12-09
- 如何在 C++ 中初始化静态常量成员? 2022-01-01
