`

将+、-(双目)重载为复数类的友元函数

阅读更多

源程序:

#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 { // 实现...

    3.2+友元函数实现运算符重载1

    本文将深入探讨如何使用成员函数和友元函数来实现运算符重载,特别是在面向对象方法与C++程序设计中。 首先,当我们谈论运算符重载时,目标是使运算符能作用于我们自定义的数据类型,如类的对象。在给定的描述中,...

    课程思政-c++语言程序设计

    - **运算符重载为友元函数**: 讲解如何通过友元函数来实现运算符的重载,尤其是在处理双目运算符时的常见实践。 **思政资源**: - **思想政治教育素材**: - 通过设计运算符重载的教学活动,培养学生勇于创新、敢于...

    C++实验四 运算符重载的应用 课程实验报告

    类中包含了复数的实部`a`和虚部`b`,以及一系列重载的运算符成员函数和友元函数: - `operator+`(成员和友元函数):实现了复数的加法运算。 - `operator-`(成员和友元函数):实现了复数的减法运算。 - `...

    C++程序设计实验6.doc

    - 双目运算符可以作为非成员函数(友元函数)来重载,因为它们涉及两个操作数。 2. **复数类(Complex)的运算符重载** - 定义类`Complex`,包含私有数据成员`real`(实部)和`image`(虚部)。 - 提供构造函数...

    推选文档程序设计实习第十五讲-运算符重载PPT.ppt

    例如,在处理复数类时,可以重载加法运算符使得复数可以方便地相加,也可以重载流运算符实现复数与输入输出流的交互。 总的来说,运算符重载是C++面向对象特性的重要组成部分,它增强了类的表达能力和灵活性,使得...

    计算机二级C专题运算符重载.pdf

    在计算机二级C++的学习中,运算符重载是一项重要的概念,它允许我们为已有的运算符赋予新的含义,以便在自定义数据类型(如这里的复数类)中使用。运算符重载有两种主要形式:作为类的成员函数和作为友元函数。 1. ...

    运算符重载 PPT学习教案.pptx

    PPT中还提供了具体的程序实例,如`Complex`类的`+`运算符重载,展示了如何通过成员函数和友元函数来实现。对于双目运算符`+=`,既可以作为成员函数也可以作为友元函数实现,而单目运算符如`!`,通常建议作为成员函数...

    b函数与运算符的重载PPT课件.pptx

    4. **双目运算符可以作为成员函数或友元函数重载**,如果操作的对象是类的实例,则通常作为成员函数;如果需要访问类的私有或保护成员,可以使用友元函数。 例如,如果我们有一个自定义的复数类`Complex`,可以重载...

    多态性实验

    第二个示例涉及复数类Complex的定义,同样涉及到运算符重载,比如+和-。这个例子虽然没有直接涉及多态性,但展示了如何通过友元函数来实现自定义类型上的运算符行为,这也是C++中多态性的一种体现。 通过本次实验,...

    c重载与模板PPT学习教案.pptx

    例如,在复数类`CComplex`中,我们可以重载`+`和`-`运算符来实现复数的加减运算。在示例代码中,`CComplex operator+(double d)`重载了加法运算符,使得复数可以与实数相加;而`CComplex operator-(CComplex &c2)`...

    C++程序设计讲义 运算符重载

    例如,我们可以定义一个复数类,并重载加法运算符`+`,使其能够执行复数相加操作。 #### 10.2 运算符重载的方法 运算符重载可以通过两种方式实现:作为类的成员函数或者作为类的友元函数。成员函数方法通常用于左...

    C++ PPT第7章 运算符重载.ppt

    单目运算符通常作为成员函数重载,而双目运算符可以作为成员函数或友元函数重载。 3. **成员与友元**:运算符函数可以是类的成员函数,也可以是类的友元函数。成员函数通常处理左操作数,而友元函数可以处理左右...

    C++程序设计 运算符重载实验(一)

    #### 复数类中的运算符重载 ##### 方案一:使用类的成员函数完成运算符重载 首先定义一个复数类`Complex`,并实现四个双目运算符+、-、*、/: ```cpp class Complex { public: Complex() : real(0), imag(0) {} ...

    c++10.ppt

    - 单目运算符可以被重载为成员函数或非成员函数,但双目运算符必须至少有一个操作数是类类型对象,且通常重载为友元函数。 10.4 运算符重载函数作为类成员函数和友元函数 成员函数形式的运算符重载通常用于处理左...

    c++ operator重载

    以复数类为例,我们可以定义一个全局的加法函数: ```cpp class Complex { public: friend Complex complex_add(const Complex &x1, const Complex &x2); // 其他成员函数 }; Complex complex_add(const Complex...

    C++程序设计

    - **友元函数**:当一个运算符被重载为友元函数时,它需要所有操作数作为显式参数。这通常用于非成员运算符的重载,如`operator+`。 - 例如,定义`Complex`类的加法运算符重载友元函数`operator+`,则可以使用`...

    C++程序设计课件 ch10 运算符重载

    例如,为复数类重载一元负号运算符(-)可以这样写: ```cpp class Complex { public: Complex operator-() const { return Complex(-real, -imag); } friend Complex operator-(const Complex& a); }; ...

    C++课件 ppt8

    以复数类为例,我们可以将“+”和“-”运算符重载为类成员函数,使它们能够接受两个复数对象并进行相应的加减运算。在实现过程中,我们需要定义一个重载函数,如`operator +`和`operator -`,这两个函数会根据复数类...

    C++面向对象程序设计讲义.pptx

    成员函数重载运算符通常作为该类的一个操作,而友元函数则可以更灵活地处理类的私有和保护成员。 4.3 重载运算符的规则 1. 不能创建新的运算符,只能重载已存在的运算符。 2. 重载的运算符必须保留原有的操作数个数...

Global site tag (gtag.js) - Google Analytics