成员函数:定义在类里面的函数,友元函数属于非成员函数

两种方式重载:

下面是成员函数重载和非成员函数重载的例子:

  1. 成员函数重载
cppCopy Code
class Vector {

public:

Vector operator+(const Vector& v) const; // 定义 "+" 重载为成员函数

};

Vector Vector::operator+(const Vector& v) const {

Vector result;
result.x = x + v.x;
result.y = y + v.y;
return result;

}

在上面的例子中,"+" 运算符被重载为类 Vector 的成员函数。这意味着可以用下面的方式来计算两个向量的和:

cppCopy Code
Vector a, b, c;

c = a + b;

  1. 非成员函数重载
cppCopy Code
class Vector {

public:

double x, y;

};

Vector operator+(const Vector& a, const Vector& b) { // 定义 "+" 重载为非成员函数

Vector result;
result.x = a.x + b.x;
result.y = a.y + b.y;
return result;

}

在上面的例子中,"+" 运算符被重载为一个非成员函数。这意味着可以在不改变 Vector 类定义的情况下计算两个向量的和:

cppCopy Code
Vector a, b, c;

c = a + b;

注意,成员函数中无需将对象作为参数传递进来,而非成员函数必须显式地传递需要操作的对象。成员函数重载将操作符与类紧密相连,而非成员函数重载则更灵活,可以在多个类之间共享。若x,y为private,则非成员函数无法以上述代码实现。

Last modification:April 20, 2023
如果觉得我的文章对你有用,请随意赞赏