成员函数:定义在类里面的函数,友元函数属于非成员函数 ## 两种方式重载: 下面是成员函数重载和非成员函数重载的例子: 1. 成员函数重载 cppCopy Codeclass 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 CodeVector a, b, c; c = a + b; 2. 非成员函数重载 cppCopy Codeclass 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 CodeVector a, b, c; c = a + b; 注意,`成员函数`中无需将对象作为参数传递进来,而`非成员函数`必须显式地传递需要操作的对象。成员函数重载将操作符与类紧密相连,而非成员函数重载则更灵活,可以在多个类之间共享。若x,y为private,则非成员函数无法以上述代码实现。 Loading... 成员函数:定义在类里面的函数,友元函数属于非成员函数 ## 两种方式重载: 下面是成员函数重载和非成员函数重载的例子: 1. 成员函数重载 <pre class="code-block-wrapper"><div class="code-block-header"><span class="code-block-header__lang">cpp</span><span class="code-block-header__copy">Copy Code</span></div><code class="hljs code-block-body cpp">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; } </code></pre> 在上面的例子中,"+" 运算符被重载为类 Vector 的成员函数。这意味着可以用下面的方式来计算两个向量的和: <pre class="code-block-wrapper"><div class="code-block-header"><span class="code-block-header__lang">cpp</span><span class="code-block-header__copy">Copy Code</span></div><code class="hljs code-block-body cpp">Vector a, b, c; c = a + b; </code></pre> 2. 非成员函数重载 <pre class="code-block-wrapper"><div class="code-block-header"><span class="code-block-header__lang">cpp</span><span class="code-block-header__copy">Copy Code</span></div><code class="hljs code-block-body cpp">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; } </code></pre> 在上面的例子中,"+" 运算符被重载为一个非成员函数。这意味着可以在不改变 Vector 类定义的情况下计算两个向量的和: <pre class="code-block-wrapper"><div class="code-block-header"><span class="code-block-header__lang">cpp</span><span class="code-block-header__copy">Copy Code</span></div><code class="hljs code-block-body cpp">Vector a, b, c; c = a + b; </code></pre> 注意,`成员函数`中无需将对象作为参数传递进来,而`非成员函数`必须显式地传递需要操作的对象。成员函数重载将操作符与类紧密相连,而非成员函数重载则更灵活,可以在多个类之间共享。若x,y为private,则非成员函数无法以上述代码实现。 Last modification:April 20, 2023 © Allow specification reprint Like 如果觉得我的文章对你有用,请随意赞赏