Можно ли спроектировать и как мне сделать перегруженный оператор +
для моего класса C
, чтобы это было возможно:
C&& c = c1 + c2;
, но это невозможно:
c1 + c2 = something;
Редактировать:
Я поменял предметы на маленькие буквы. c1
, c2
и c
являются объектами класса C
. &&
- это не логический оператор &&
, а скорее ссылка на rvalue.
Например, запись:
double&& d = 1.0 + 2.0;
- это 100% правильный (новый) код C ++, а
1.0 + 2.0 = 4.0;
- очевидно ошибка компилятора. Я хочу точно то же самое, но вместо двойного, для моего класса C
.
Второе редактирование: Если мой оператор возвращает C или C &, я могу иметь присвоение ссылке rvalue, но также присвоение c1 + c2, что бессмысленно. Указание здесь const отключает его, но также отключает присваивание rvalue. По крайней мере, на VC ++ 2k10. Так как же double это получается?