C++面向对象:运算符重载与友元函数实现双目运算

需积分: 17 0 下载量 111 浏览量 更新于2024-08-19 收藏 272KB PPT 举报
"本教程介绍了如何使用类的友元函数重载C++中的双目运算符,特别是针对面向对象程序设计中的运算符重载概念进行了详细讲解。在第4章中,作者通过一个复数相加的例子展示了如何通过友元函数实现运算符的功能。" 在C++中,运算符重载是一种特性,它允许程序员为已有的运算符赋予新的含义,以适应特定类或结构的需求。这种重载并不创建新的运算符,而是为已有的运算符提供不同的实现方式,使得这些运算符可以在自定义的数据类型上进行操作。例如,在复数类中,我们可以重载加法运算符"+",使得两个复数对象可以直接通过"+"进行相加。 在复数类`Complex`的示例中,类包含私有数据成员(实部`real`和虚部`image`),以及公有构造函数、显示复数的`Show`方法,以及一个静态的友元函数`Add`。友元函数是类的一个特殊成员,它可以直接访问类的私有和保护成员,即使这个函数不是类的成员。在这里,`Add`函数接受两个`Complex`对象作为参数,计算它们的实部和虚部之和,并返回一个新的`Complex`对象。 友元函数`Add`的定义如下: ```cpp Complex Complex::Add(const Complex& z1, const Complex& z2) { Complex z(z1.real + z2.real, z1.image + z2.image); // 定义新复数对象 return z; // 返回复数对象 } ``` 在`main`函数中,我们创建了三个`Complex`对象`z1`、`z2`和`z3`,然后调用`Show`方法显示它们。接着,我们通过类的静态成员函数`Add`将`z1`和`z2`相加,并将结果赋值给`z3`,最后再次显示`z3`的结果。 通过友元函数重载双目运算符,可以使得类的使用更加直观和符合用户的期待,提高了代码的可读性和易用性。在这个例子中,用户可以直接使用"+"运算符对复数进行相加,而不需要调用特定的加法函数,这正是运算符重载的精髓所在。