这让我困惑了一段时间:使用printf,你提供了一些形式来决定如何解释参数,但是cout并不需要这样。 cout如何知道根据正确的类型读取变量?
答案 0 :(得分:2)
它被称为函数重载。在C ++中,只要它们采用不同的参数集,您就可以拥有相同名称的任意数量的函数(在这种情况下,operator<<
是名称)。 cout
没有规定编译器如何解释参数。或者更确切地说,编译器指示调用哪个函数,该函数指示参数的格式化方式。编译器知道每个参数的类型,并相应地调用相应的函数。
例如,这会调用ostream::operator<<(int)
cout << 10;
这会调用ostream::operator<<(double)
,这是一个完全不同的功能
cout << 3.14;