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

问题描述:

这是工作还是做两个操作数需要是用户定义类型的对象?重载二元运算符的右操作数是否可以是基本类型的对象?

+2

你试过了吗?发生了什么? – DimChtz

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

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

enum class foo { bar }; 

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

以上,使1 + foo::barfoo::bar*2有效表达式(什么也不做)。