0

复制两个双精度的开销可能很明显,但通常比一对指针强加的要少

来自 C++ 编。朗。

有人可以解释一下吗?

4

1 回答 1

2

这取自 Stroustrup 的“C++ 编程语言”的第 11 章。

让我们看一下上下文中的引用:

我们将complex运算符定义为接受类型为 的参数complex。这意味着对于complex运算符的每次使用,都会复制每个操作数。复制两个的开销doubles可能很明显,但通常比一对指针强加的开销要小(通过指针访问可能相对昂贵)。不幸的是,并非所有类都有方便的小表示。为避免过度复制,可以声明函数以获取引用参数。例如:

class Matrix {
      double m[4][4];
public:
      Matrix();
      friend Matrix operator+(const Matrix&, const Matrix&);
      friend Matrix operator*(const Matrix&, const Matrix&);
};

他只是说,因为它很小,所以通过价值而不是通过引用complex传递它是可以接受的。const然而,这对于较大的类型是不可接受的,例如Matrix上面的。对于这种类型,通过const引用传递是首选方法,因为它可以避免复制整个矩阵。

于 2012-12-15T15:23:09.173 回答