实现Vector 类(四)
这里主要做一些优化
传入参数属性的选择
拿其中的一个函数作为例子
// 函数原型
class Vector
{
...
public:
...
Vector operator+(Vector v1);
}
// 函数定义
Vector Vector::operator+(Vector v1)
{
Vector temp;
temp.x = v1.x + x;
temp.y = v1.y + y;
return temp;
}
在这里,我们传入了一个v1对象
当我这样子调用
Vector v1(2,3);
Vector v2(3,4);
Vector v;
v = v1 + v2;
相当于这样子
v = v1.operator+(v2);
v2作为参数传进函数中
聪明的你们当然知道这是传值引用
所以,v2传入函数时会创建一个临时对象
然后用这个临时对象参与运算
最后返回一个另一个临时对象temp
退出函数时,v2形成的临时对象执行析构函数被销毁
临时对象temp赋值给对象v后被自动销毁
选择:
按值传递,按址传递,按引用传递
按值传递需要创建临时对象
需要消耗额外的计算与存储资源
最好是传入指针或引用
当然在C++中引用是更好的选择
因此我们可以这样修改
// 函数原型
class Vector
{
...