我正在学习重载,如果我能用两个非类参数创建一个重载运算符,我很好奇。
例如,使用x和y来调用
的向量类var date = "4/10/2016, 4:00:00PM";
var res = date.match(/(\d+)(?=:\d+:\d+)|([A-Z]+)(?=$)/g);
document.body.textContent = res.join(" ");
谢谢!
修改
我已设法做到这一点,并且还扩展为使用与用户创建一样多的参数。这就是它的样子:
vector += (4.5, -2.1);
希望有人觉得它很有用。
答案 0 :(得分:3)
这不会奏效,因为(4.5, -2.1)
会调用内置的逗号运算符,只需求值为-2.1
。 可以这样做:
vector += 4.5, -2.1;
这是有效的,因为,
的优先级低于+=
。您可以重载+=
,以便它返回一个代理对象,而该代理对象又有一个重载的,
运算符,它将附加其他元素。
答案 1 :(得分:1)
v & operator += (std::initializer_list<int> l)
{
sum = std::accumulate(l.begin(), l.end(), sum);
.....
您必须将您的电话改为
vector += {1 , 2};
答案 2 :(得分:0)
如果你有一对配对,那么
就是一个更具可读性的选择vector += std::make_pair( 4.5, -2.1 );
看起来不那么神奇,这通常是一件好事。