Пусть мы имеем достаточно большой класс, например Matrix (соответствующий математической матрице), т.е. копировать объекты данного класса лишний раз крайне не хотелось бы. Рассмотрим два варианта функции, отображающей матрицу в число, но перед отображением исходная матрица изменяется:Код:int func(const Matrix& matrix){ SomeClass temp = matrix; temp.transform(); // каким-либо образом трансформирует матрицу return matrix2Scalar(temp); // каким-либо образом отображает матрицу в число}int func(Matrix matrix){ matrix.transform(); // каким-либо образом трансформирует матрицу return matrix2Scalar(matrix); // каким-либо образом отображает матрицу в число}Вариант 1 более ясный, поскольку вариант 2 смотрится как небрежный (банальный недосмотр, когда предполагается передача по конст. ссылке, а не по значению) и заставит заглянуть внутрь функции. С другой стороны, вариант 2 немного более лаконичен и оптимален в плане машинного кода.Собственно, ваши мнения.
|