重载二元运算符的右操作数可以是基本类型的对象吗?

时间:2017-11-03 23:23:26

标签: c++ object types operator-overloading

这是否有效,或者两个操作数都需要是用户定义类型的对象吗?

1 个答案:

答案 0 :(得分:2)

重载二元运算符的至少一个操作数需要由用户定义。但他们不一定都是。

例如,一对合法但无用的定义:

enum class foo { bar };

void operator+(int, foo) {}
void operator*(foo, int) {}

上述内容使1 + foo::barfoo::bar*2有效表达式(无效)。