标签: c++ object types operator-overloading
这是否有效,或者两个操作数都需要是用户定义类型的对象吗?
答案 0 :(得分:2)
重载二元运算符的至少一个操作数需要由用户定义。但他们不一定都是。
例如,一对合法但无用的定义:
enum class foo { bar }; void operator+(int, foo) {} void operator*(foo, int) {}
上述内容使1 + foo::bar和foo::bar*2有效表达式(无效)。
1 + foo::bar
foo::bar*2