在C++中流重载

shr*_*sva 0 c++ operator-overloading

为什么会 void operator<<(ostream out, Test &t); 返回错误而 void operator<<(ostream &out, Test &t); 不是?

sbi*_*sbi 10

因为您无法复制流,所以必须按引用传递它们.

请注意,规范形式operator<<是这样的:

std::ostream& operator<<(std::ostream& out, const Test &t)
{
   // write t into out
   return out;
}
Run Code Online (Sandbox Code Playgroud)

返回流很重要,这样你就可以将输出串起来:

std::cout << Test() << '\n';
Run Code Online (Sandbox Code Playgroud)