我试图理解 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"
。然后,第三次,参数是 cout
和 a + b
的结果。也许使用(技术上不正确,请参阅@DavidRodríguez-dribeas 的评论)函数调用语法重写代码会有所帮助:
operator<<(operator<<(operator<<(cout, "Hello,"), "World"), a + b);
因为每次调用
operator<<
都会返回 cout
,所以每次调用的第一个参数将是 cout
。关于c++ - 我们如何允许在 C++ 中将插入运算符和其他运算符链接在一起?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22132704/