gpt4 book ai didi

c++ - 链式 `operator >>` 优于 Variadic 模板函数的优势?

转载 作者:搜寻专家 更新时间:2023-10-31 00:42:35 25 4
gpt4 key购买 nike

考虑以下 C++ 代码:

A a = ...;
B b = ...;
C c = ...;

cin >> a >> b >> c;
...
cout << a << b << c;

现在我们有了 C++11 可变参数模板函数(我认为),它可以通过以下方式之一实现:

cin.read(a,b,c);
cout.write(a,b,c);

read(cin,a,b,c);
write(cout,a,b,c);

cin(a,b,c);
cout(a,b,c);

链式<<有什么优点吗?算过这些方式吗?换句话说 - 你认为如果他们在开始时有可变参数模板函数,他们仍然会使用 operator <<operator >> ?如果是,为什么?

最佳答案

iostream 最重要​​的方面之一是它可扩展。您可以添加新类型,您需要做的就是提供一个重载的 <<用于写作和>>阅读。

您需要为可变版本提供类似的机制。

您必须提供一些全局或命名空间作用域的函数名称,这些函数名称将由 istream::read 的参数相关查找调用。和 ostream::write .此函数的名称需要明确定义。但是您不会在 cin.read(a,b,c); 中找到该函数的名称。根本。除非是 read ,在这种情况下,您会遇到许多潜在的名称冲突问题。

与重载 operator<< 相比,这种机制没有那么明显。 .您需要查找文档才能知道要为其编写重载的函数的名称是什么,而 operator<<就在声明中:cout << ... .

关于c++ - 链式 `operator >>` 优于 Variadic 模板函数的优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11820651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com