在C+中,如何将插入操作符和其他操作符链接在一起+;? 我试图理解C++中的底层过程,它允许我们在C++中形成以下表达式: cout << "Hello," << "World" << a + b; cout

在C+中,如何将插入操作符和其他操作符链接在一起+;? 我试图理解C++中的底层过程,它允许我们在C++中形成以下表达式: cout << "Hello," << "World" << a + b; cout,c++,operators,C++,Operators,你可以想到 根据我的理解,首先,插入运算符将ostream对象cout和字符串文字“Hello”作为操作数,表达式返回一种cout类型 很好,到目前为止 因此cout现在是下一个字符串文本的类型,最后也是表达式a+b的类型 我不知道你想说什么。如果运算符按优先级分组,可能会有所帮助: (((cout << "Hello,") << "World") << (a + b)); 因为每次operator移位运算符都建议读取:那么,从第一个表达式cout@Muta

你可以想到

根据我的理解,首先,插入运算符将ostream对象cout和字符串文字“Hello”作为操作数,表达式返回一种cout类型

很好,到目前为止

因此cout现在是下一个字符串文本的类型,最后也是表达式a+b的类型

我不知道你想说什么。如果运算符按优先级分组,可能会有所帮助:

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

因为每次
operator移位运算符
都建议读取:那么,从第一个表达式cout@MutatingAlgorithm返回的实际内容是对
cout
的引用。相同的
cout
对象,不是副本。小注:语法使用
operator@DavidRodríguez dribeas哦,说得好。补充了一点关于这一点的说明。
cout << a << b;
(cout << a) << b;
(((cout << "Hello,") << "World") << (a + b));
operator<<(operator<<(operator<<(cout, "Hello,"), "World"), a + b);
cout << "Hello," << "World" << a + b;
( ( ( cout << "Hello," ) << "World" ) << a + b );
cout << "Hello,"
template<class charT, class traits>
basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, const charT*);
cout << "Hello,"
cout << "World"
cout << a + b