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)
不,那是不可能的.
你最接近的将是:
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.除了学习经验外,我真的怀疑它是否值得麻烦.
类似于该样式的东西通常在"构建器"模式中使用,但使用成员函数而不是显式运算符.这很有用,因为您可以安排有效地使配置参数与顺序无关.