Правила программирования на Си и Си++



         

148. Перегруженные операции должны работать точно так же, как они работают в Си - часть 2


·      Имена переменных несоставного типа дают lvalue.

·      Операции *, -> и [] генерируют lvalue, когда относятся к несоставной переменной, иначе они работают подобно именам составных переменных. Если y не является массивом, то x->y создает тип lvalue, который ссылается на этого поле данных. Если y —

массив, то x->y генерирует тип rvalue, который ссылается на первую ячейку этого массива.

В Си++ перегруженные * и [] должны возвращать ссылки на указанный объект. Операция operator-> таинственна. Правила по существу заставляют вас использовать ее таким же образом, как вы делали бы это в Си. Операция -> рассматривается как унарная с операндом слева от нее. Перегруженная функция должна возвращать указатель на что-нибудь, имеющее поля — структуру,

класс или объединение. Компилятор будет затем использовать такое поле для получения lvalue или rvalue. Вы не можете перегрузить .(точку).

·      Все другие операнды генерируют тип rvalue.

Эквивалентные перегруженные операции должны возвращать объекты, а не ссылки или указатели.




Содержание  Назад  Вперед