本文共 1558 字,大约阅读时间需要 5 分钟。
函数重载是C++中的一大特性,它允许在同一个作用域内定义多个名相同的函数。这些函数通过参数的不同来区分,编译器会根据函数调用的参数依次选择合适的函数执行。
在类中,函数重载可以应用于静态成员函数和普通成员函数,但全局函数和成员函数不能构成重载关系。
操作符重载是C++中的一大优势,它允许我们为用户定义类操作符,使得对象能够像普通变量一样进行运算。
操作符重载通过在函数前使用operator关键字定义。定义方式如下:
[返回类型] operator [操作符] ([参数]) { // 函数体} this指针。const class_name &:以避免产生临时对象。+||=->以加法+为例:
Test t3 = t1 + t2; // 调用的是全局操作符重载函数Test t3 = t1.operator+(t2); // 调用的是成员操作符重载函数
复数类需要实现以下运算:
+:实部和虚部分别相加。-:实部和虚部分别相减。*:使用复数乘法公式。/:使用复数除法公式。==和!=:比较实部和虚部。=:复数的赋值操作。class Complex {private: double a; double b;public: Complex(int a = 0, int b = 0) {} Complex operator+(const Complex &t) { Complex ret; ret.a = a + t.a; ret.b = b + t.b; return ret; } // 其他操作符重载函数...} 编写测试文件验证复数类的功能:
#include "stdio.h"#include "Complex.h"int main() { Complex t1(1, 3); Complex t2(2, 6); Complex t3 = t1 + t2; printf("t3.a = %.2f, t3.b = %.2f\n", t3.getA(), t3.getB()); printf("t3的模 = %.2f\n", t3.getModulus()); return 0;} t3.a = 3.00, t3.b = 9.00t3的模 = 9.49
通过这些实例可以看出,操作符重载在复数类中的应用使得复数运算变得自然且直观。
转载地址:http://nriyz.baihongyu.com/