Выражение присвоения

#c

#c

Вопрос:

Будет ли оператор присваивания ( = ) возвращать значение левой (или правой части)?

 QVector<function>::Iterator it;

binOp *bpl = nullptr;
                    
bool b1 = (bpl = dynamic_cast<binOp *>(amp;*(it-2))) != nullptr;
 

Итак, у меня есть свой собственный класс (BinOp : function), и я пытаюсь использовать dynamic_cast в выражении. Если я буду использовать присваивание bpl , будет ли оно равно bpl и таким же, как это?:

 bpl = dynamic_cast<binOp *>(amp;*(it-2)));

bool b2 = bpl != nullptr;
 

Так будет ли b1 равно b2?

Комментарии:

1. после = выполнения не должно иметь значения, сравниваете ли вы с lhs или rhs

Ответ №1:

= Оператор присваивания возвращает ссылку на левый операнд. Итак, ваш 1-й пример будет работать просто отлично, и результат будет эквивалентен вашему 2-му примеру.