Бьерн Страуструп.
Язык программирования С++
190
friend matrix& operator+(const matrix&, const matrix&);
friend matrix& operator*(const matrix&, const matrix&);
};
Это допустимо, но возникает проблема с выделением памяти. Поскольку ссылка на результат операции
будет передаваться как ссылка на возвращаемое функцией значение, оно не может быть
автоматической переменной этой функции. Поскольку операция может использоваться неоднократно в
одном выражении, результат не может быть и локальной статической переменной. Как правило,
результат будет записываться в отведенный в свободной памяти объект. Обычно бывает дешевле (по
затратам на время выполнения и память данных и команд) копировать результирующее значение, чем
размещать его в свободной памяти и затем в конечном счете освобождать выделенную память. К тому
же этот способ проще запрограммировать.
Достарыңызбен бөлісу: