C++操作符重载:全局函数实现复数相加

需积分: 9 1 下载量 9 浏览量 更新于2024-08-20 收藏 612KB PPT 举报
"这篇课件主要讲解了C++中的操作符重载,特别是以全局函数形式重载操作符的方法,以复数类为例展示了如何实现复数相加。" 在C++编程语言中,操作符重载是一项重要的特性,它允许我们为自定义数据类型赋予与内置类型相同的操作符含义,使得代码更具有表达性和易读性。在复数类的上下文中,操作符重载可以方便地处理复数的数学运算,如加法、减法等。在这个例子中,我们将关注复数的加法操作符`+`的重载。 首先,我们看到类`Complex`定义了一个友元函数`operator +`,这是以全局函数的形式重载操作符的一种方式。友元函数不隶属于类的成员,但可以直接访问类的私有和保护成员。在这里,`operator +`接收两个`const Complex`引用作为参数,并返回一个新的`Complex`对象,即两个复数相加的结果。 ```cpp friend Complex operator + (const Complex& c1, const Complex& c2); ``` 接着,我们看到这个友元函数的具体实现: ```cpp Complex operator + (const Complex& c1, const Complex& c2) { Complex temp; temp.real = c1.real + c2.real; temp.imag = c1.imag + c2.imag; return temp; } ``` 这个函数创建了一个临时的`Complex`对象`temp`,并将`c1`和`c2`的实部和虚部分别相加,然后将结果存储在`temp`中,最后返回`temp`。这样的设计遵循了C++中操作符`+`的行为,即两个操作数相加并返回新的值。 在示例代码的末尾,我们看到了如何使用这个重载的操作符: ```cpp Complex a(1.0,2.0),b(3.0,4.0),c; c = a + b; ``` 这里,`a + b`调用了我们之前定义的全局函数`operator +`,将`a`和`b`相加得到的结果赋值给`c`,这与基本类型的加法操作并无二致,提高了代码的可读性。 操作符重载分为多种类型,包括双目操作符(如`+`、`*`)、单目操作符(如`++`、`--`)、以及一些特殊操作符(如`[]`、`()`)。对于单目操作符,它们可能需要作为成员函数重载,因为它们通常涉及到对对象自身的修改。而双目操作符既可以作为成员函数重载(如`c1 += c2`),也可以作为全局函数重载(如`c = c1 + c2`)。 操作符重载是C++中提升类和对象使用体验的关键手段,通过合理的重载,可以让自定义类型更加符合数学逻辑,使得代码更简洁、直观。在复数类的设计中,通过重载`operator +`,我们能够方便地执行复数的加法运算,使得代码的表达力更强。