源程序:
#include<iostream.h>
class complex //复数类声明
{
public: //外部接口
complex(double r=0.0,double i=0.0){ real=r; imag=i; } //构造函数
friend complex operator + (complex c1,complex c2); //运算符+重载为友元函数
friend complex operator - (complex c1,complex c2); //运算符-重载为友元函数
void display(); //显示复数的值
private: //私有数据成员
double real;
double imag;
};
complex operator +(complex c1,complex c2) //运算符重载友元函数实现
{
return complex(c2.real+c1.real, c2.imag+c1.imag);
}
complex operator -(complex c1,complex c2) //运算符重载友元函数实现
{
return complex(c1.real-c2.real, c1.imag-c2.imag);
}
void complex::display()
{ cout<<"("<<real<<","<<imag<<")"<<endl; }
int main() //主函数
{
complex c1(5,4),c2(2,10),c3; //声明复数类的对象
cout<<"c1="; c1.display();
cout<<"c2="; c2.display();
c3=c1-c2; //使用重载运算符完成复数减法
cout<<"c3=c1-c2=";
c3.display();
c3=c1+c2; //使用重载运算符完成复数加法
cout<<"c3=c1+c2=";
c3.display();
}
分享到:
相关推荐
例如,我们可以为一个复数类重载 "+" 运算符,使得两个复数相加时,结果仍然是一个新的复数对象。这样做的语法如下: ```cpp class Complex { public: Complex operator+(const Complex& other) const { // 实现...
本文将深入探讨如何使用成员函数和友元函数来实现运算符重载,特别是在面向对象方法与C++程序设计中。 首先,当我们谈论运算符重载时,目标是使运算符能作用于我们自定义的数据类型,如类的对象。在给定的描述中,...
- **运算符重载为友元函数**: 讲解如何通过友元函数来实现运算符的重载,尤其是在处理双目运算符时的常见实践。 **思政资源**: - **思想政治教育素材**: - 通过设计运算符重载的教学活动,培养学生勇于创新、敢于...
类中包含了复数的实部`a`和虚部`b`,以及一系列重载的运算符成员函数和友元函数: - `operator+`(成员和友元函数):实现了复数的加法运算。 - `operator-`(成员和友元函数):实现了复数的减法运算。 - `...
- 双目运算符可以作为非成员函数(友元函数)来重载,因为它们涉及两个操作数。 2. **复数类(Complex)的运算符重载** - 定义类`Complex`,包含私有数据成员`real`(实部)和`image`(虚部)。 - 提供构造函数...
例如,在处理复数类时,可以重载加法运算符使得复数可以方便地相加,也可以重载流运算符实现复数与输入输出流的交互。 总的来说,运算符重载是C++面向对象特性的重要组成部分,它增强了类的表达能力和灵活性,使得...
在计算机二级C++的学习中,运算符重载是一项重要的概念,它允许我们为已有的运算符赋予新的含义,以便在自定义数据类型(如这里的复数类)中使用。运算符重载有两种主要形式:作为类的成员函数和作为友元函数。 1. ...
PPT中还提供了具体的程序实例,如`Complex`类的`+`运算符重载,展示了如何通过成员函数和友元函数来实现。对于双目运算符`+=`,既可以作为成员函数也可以作为友元函数实现,而单目运算符如`!`,通常建议作为成员函数...
4. **双目运算符可以作为成员函数或友元函数重载**,如果操作的对象是类的实例,则通常作为成员函数;如果需要访问类的私有或保护成员,可以使用友元函数。 例如,如果我们有一个自定义的复数类`Complex`,可以重载...
第二个示例涉及复数类Complex的定义,同样涉及到运算符重载,比如+和-。这个例子虽然没有直接涉及多态性,但展示了如何通过友元函数来实现自定义类型上的运算符行为,这也是C++中多态性的一种体现。 通过本次实验,...
例如,在复数类`CComplex`中,我们可以重载`+`和`-`运算符来实现复数的加减运算。在示例代码中,`CComplex operator+(double d)`重载了加法运算符,使得复数可以与实数相加;而`CComplex operator-(CComplex &c2)`...
例如,我们可以定义一个复数类,并重载加法运算符`+`,使其能够执行复数相加操作。 #### 10.2 运算符重载的方法 运算符重载可以通过两种方式实现:作为类的成员函数或者作为类的友元函数。成员函数方法通常用于左...
单目运算符通常作为成员函数重载,而双目运算符可以作为成员函数或友元函数重载。 3. **成员与友元**:运算符函数可以是类的成员函数,也可以是类的友元函数。成员函数通常处理左操作数,而友元函数可以处理左右...
#### 复数类中的运算符重载 ##### 方案一:使用类的成员函数完成运算符重载 首先定义一个复数类`Complex`,并实现四个双目运算符+、-、*、/: ```cpp class Complex { public: Complex() : real(0), imag(0) {} ...
- 单目运算符可以被重载为成员函数或非成员函数,但双目运算符必须至少有一个操作数是类类型对象,且通常重载为友元函数。 10.4 运算符重载函数作为类成员函数和友元函数 成员函数形式的运算符重载通常用于处理左...
以复数类为例,我们可以定义一个全局的加法函数: ```cpp class Complex { public: friend Complex complex_add(const Complex &x1, const Complex &x2); // 其他成员函数 }; Complex complex_add(const Complex...
- **友元函数**:当一个运算符被重载为友元函数时,它需要所有操作数作为显式参数。这通常用于非成员运算符的重载,如`operator+`。 - 例如,定义`Complex`类的加法运算符重载友元函数`operator+`,则可以使用`...
例如,为复数类重载一元负号运算符(-)可以这样写: ```cpp class Complex { public: Complex operator-() const { return Complex(-real, -imag); } friend Complex operator-(const Complex& a); }; ...
以复数类为例,我们可以将“+”和“-”运算符重载为类成员函数,使它们能够接受两个复数对象并进行相应的加减运算。在实现过程中,我们需要定义一个重载函数,如`operator +`和`operator -`,这两个函数会根据复数类...
成员函数重载运算符通常作为该类的一个操作,而友元函数则可以更灵活地处理类的私有和保护成员。 4.3 重载运算符的规则 1. 不能创建新的运算符,只能重载已存在的运算符。 2. 重载的运算符必须保留原有的操作数个数...