我试图理解 C++ 中的底层过程,它允许我们在 C++ 中形成以下表达式:

cout << "Hello," << "World" << a + b;

根据我的理解,首先,插入运算符将 ostream 对象 cout 和字符串文字 "Hello" 作为操作数,表达式返回 cout 的类型,因此 cout 现在是下一个字符串文字的类型,最后也是表达式 a + b 的类型.

我在理解此过程的技术细节时遇到问题,我知道涉及允许我们执行此操作的引用资料?

最佳答案



目前很好...



我不确定你想在这里说什么。如果根据优先级对运算符进行分组,可能会有所帮助:

(((cout << "Hello,") << "World") << (a + b));

第一次调用 operator<< 时,它​​的参数是 cout"Hello" ,如您所说。返回 cout 。然后,第二次,参数是 cout (前一个的结果)和 "World" 。然后,第三次,参数是 couta + b 的结果。

也许使用(技术上不正确,请参阅@DavidRodríguez-dribeas 的评论)函数调用语法重写代码会有所帮助:
operator<<(operator<<(operator<<(cout, "Hello,"), "World"), a + b);

因为每次调用 operator<< 都会返回 cout ,所以每次调用的第一个参数将是 cout

关于c++ - 我们如何允许在 C++ 中将插入运算符和其他运算符链接在一起?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22132704/

10-11 22:35
查看更多