Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通用打印函数 我手头没有一本好的C++书,谷歌没有什么有用的东西。_C++_Operator Overloading_Iostream - Fatal编程技术网

通用打印函数 我手头没有一本好的C++书,谷歌没有什么有用的东西。

通用打印函数 我手头没有一本好的C++书,谷歌没有什么有用的东西。,c++,operator-overloading,iostream,C++,Operator Overloading,Iostream,这是怎么回事?从概念上讲,这里发生了什么?从技术上讲,operator的原型是不是很模糊,但我想试一试: 从技术上讲,是运营商的原型吗?你指的是允许不同运营商使用的原型?看一看。我有点想投票来结束这场闹剧,但后来我怀疑了,因为这似乎不仅仅是问操作符重载是如何工作的。我不确定。它总是同一个运算符,只对不同类型重载,特别是以std::ostream&(或另一种类型的流)作为左操作数。在这种情况下,您必须小心返回对传递给运算符以允许链接的同一流的引用。现在我们讨论的是…右侧操作数定义在哪里?@chri

这是怎么回事?从概念上讲,这里发生了什么?从技术上讲,operator的原型是不是很模糊,但我想试一试:


从技术上讲,是运营商的原型吗?你指的是允许不同运营商使用的原型?看一看。我有点想投票来结束这场闹剧,但后来我怀疑了,因为这似乎不仅仅是问操作符重载是如何工作的。我不确定。它总是同一个运算符,只对不同类型重载,特别是以
std::ostream&
(或另一种类型的流)作为左操作数。在这种情况下,您必须小心返回对传递给运算符以允许链接的同一流的引用。现在我们讨论的是…右侧操作数定义在哪里?@chrisaker:对于映射,只有在第二部分使用
运算符时,它才起作用,值得注意的是,要求一个人通过输出范围的结束将是完全多余的。“复制A->B到从C开始的地方”是很常见的;请参阅:
memcpy
template <typename Container> 
std::ostream& operator<<(std::ostream& os, const Container& c) 
{ 
    std::copy(c.begin(), c.end(),  
              std::ostream_iterator<typename Container::value_type>(os, " ")); 
    return os; 
}