【发布时间】:2012-12-13 19:44:54
【问题描述】:
复制两个双打的开销可能很明显,但通常更少 比一对指针强加的要强
来自 C++ 程序。语言。
谁能解释一下?
【问题讨论】:
-
请添加相关上下文,那个人在说什么?
标签: c++ pointers double copying
复制两个双打的开销可能很明显,但通常更少 比一对指针强加的要强
来自 C++ 程序。语言。
谁能解释一下?
【问题讨论】:
标签: c++ pointers double copying
这摘自 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 引用传递是首选方法,因为它可以避免复制整个矩阵。
【讨论】: