欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++运算符的重载

程序员文章站 2024-03-17 21:34:22
...

运算符的重载可以提高程序运行的效率
通过成员函数的重载

#include<iostream>
using namespace std;
class Complex				//定义Complex类
{
public:
	Complex(){real=0;imag=0;}			//定义构造函数
	Complex(double r,double i){real=r;imag=i;}	//构造函数重载
	Complex complex_add(Complex &c2);	//声明负数相加函数
	void display();			//使命输出函数
private:
	double real;			//实部
	double imag;			//虚部
};
Complex Complex::complex_add(Complex &c2)	//定义复数相加
{
	Complex c;
	c.real=real+c2.real;
	c.imag=imag+c2.imag;
	return c;
}
void Complex::display()					//定义输出函数
{cout<<"("<<real<<","<<imag<<"i)"<<endl;}

int main()
{
	Complex c1(3,4),c2(5,-10),c3;		//定义3个复数对象
	c3=c1.complex_add(c2);			//调用复数相加函数
	cout<<"c1=";c1.display();		//输出c1的值
	cout<<"c2=";c2.display();		//输出c2的值
	cout<<"c1+c2=";c3.display();	//输出c3的值
	return 0;
}

运行结果
C++运算符的重载

注意:成员函数重载不能调用私有部分,只能通过公有函数实现

用operator函数对运算符重载

#include<iostream>
using namespace std;
class Complex				//定义Complex类
{
public:
	Complex(){real=0;imag=0;}			//定义构造函数
	Complex(double r,double i){real=r;imag=i;}
	Complex operator+(Complex &c2);		//声明重载运算+的函数
	void display();			//使命输出函数
private:
	double real;			//实部
	double imag;			//虚部
};
Complex Complex::operator+(Complex &c2)	//定义重载运算符+的函数
{
	Complex c;
	c.real=real+c2.real;
	c.imag=imag+c2.imag;
	return c;
}
void Complex::display()					//定义输出函数
{cout<<"("<<real<<","<<imag<<"i)"<<endl;}

int main()
{
	Complex c1(3,4),c2(5,-10),c3;		//定义3个复数对象
	c3=c1+c2;
	cout<<"c1=";c1.display();		//输出c1的值
	cout<<"c2=";c2.display();		//输出c2的值
	cout<<"c1+c2=";c3.display();	//输出c3的值
	return 0;
}

运行结果
C++运算符的重载
友元函数运算符的重载

#include<iostream>
using namespace std;
class Complex				//定义Complex类
{
public:
	Complex(){real=0;imag=0;}			//定义构造函数
	Complex(double r,double i){real=r;imag=i;}	//构造函数重载
	friend Complex operator+(Complex &c1,Complex &c2);	//重载函数作为友函数
	void display();			//使命输出函数
private:
	double real;			//实部
	double imag;			//虚部
};
Complex operator+(Complex &c1,Complex &c2)
{return Complex(c1.real+c2.real,c1.imag+c2.imag);}
void Complex::display()					//定义输出函数
{cout<<"("<<real<<","<<imag<<"i)"<<endl;}

int main()
{
	Complex c1(116,4),c2(5,-10),c3;		//定义3个复数对象
	c3=c1+c2;
	cout<<"c1=";c1.display();		//输出c1的值
	cout<<"c2=";c2.display();		//输出c2的值
	cout<<"c1+c2=";c3.display();	//输出c3的值
	return 0;
}

注意:将双目运算符重载为友元函数时,由于友元函数不是该类的成员函数,因此再函数的形参表列中必需有两个参数,不能省略。

相关标签: C++ c++