cout如何知道如何格式化不同类型?

时间:2013-06-30 00:38:10

标签: c++ printf cout

这让我困惑了一段时间:使用printf,你提供了一些形式来决定如何解释参数,但是cout并不需要这样。 cout如何知道根据正确的类型读取变量?

1 个答案:

答案 0 :(得分:2)

它被称为函数重载。在C ++中,只要它们采用不同的参数集,您就可以拥有相同名称的任意数量的函数(在这种情况下,operator<<是名称)。 cout没有规定编译器如何解释参数。或者更确切地说,编译器指示调用哪个函数,该函数指示参数的格式化方式。编译器知道每个参数的类型,并相应地调用相应的函数。

例如,这会调用ostream::operator<<(int)

cout << 10;

这会调用ostream::operator<<(double),这是一个完全不同的功能

cout << 3.14;