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()
基础教程推荐
- 将不可复制的闭包对象传递给 std::function 参数 2021-01-01
- 如何部分禁用 cmake C/C++ 自定义编译器检查 2021-01-01
- 如何更改 SysDateTimePick32 或 CDateTimeCtrl 的背景颜色? 2022-01-01
- 提升 ASIO 流缓冲 2021-01-01
- 为什么我们不能使用“虚拟继承"?在 COM 中? 2022-01-01
- c++ STL设置差异 2022-01-01
- C++:获取传递给函数的多维数组的行大小 2021-01-01
- 随机插入/删除的综合向量与链表基准 2022-01-01
- 如何在 C++ 中正确使用命名空间? 2022-01-01
- 与 CAS 的原子交换(使用 gcc 同步内置函数) 2022-01-01
