<<具有多个参数的运算符

tao*_*aof 2 c++ parameters overloading operator-keyword

我只想知道我们是否可以给运算符<<的重载提供两个或更多参数

一个例子将更明确:

anyType         operator<<(arg p1, arg p2)
{
DoSomethingWith(p1);
DoSomethingWith(p2);
return (*this);
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

anyVar << anyVar2, anyVar3;
Run Code Online (Sandbox Code Playgroud)

ric*_*ici 5

不,那是不可能的.

你最接近的将是:

anyType         operator<<(std::pair<arg, arg> p)
{
  DoSomethingWith(p.first);
  DoSomethingWith(p.second);
  return (*this);
}

anyvar << std::make_pair(a1, a2);
Run Code Online (Sandbox Code Playgroud)

或者,你可以做一些更复杂的有效咖喱调用您的运营商,具有anyType::operator<<(arg)返回一个临时对象,只抱到它的参数,并实现不同的tempObject::operator<<(arg),实际上做的工作.然后你可以将其称为anyvar << arg1 << arg2.除了学习经验外,我真的怀疑它是否值得麻烦.

类似于该样式的东西通常在"构建器"模式中使用,但使用成员函数而不是显式运算符.这很有用,因为您可以安排有效地使配置参数与顺序无关.