实验九 运算符重载1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验九运算符重载(一)
1、实验目的
理解运算符重载的概念和实质,掌握运算符重载函数的定义方法,掌握将运算符重载为类的成员函数和友元函数的方法,掌握和运用几种常用的用C++语言运算符的重载进行解决问题的方法。
2、实验内容
(1) 编写程序,运用运算符重载实现点类Point的两个对象(即两点)间横、纵坐标的相加
运算。
// 1234.cpp : 定义控制台应用程序的入口点。
//
#include"stdafx.h"
#include
using namespace std;
class point
{public:
point(){x=0;y=0;}
point(int x1,int y1){x=x1;y=y1;}
point operator + (point &p2);
void display();
private:
int x;
int y;
};
point point ::operator + (point &p2)
{point p;
p.x=x+p2.x;
p.y=y+p2.y;
return p;}
void point::display()
{cout<<"("< int main() {point p1(3,4),p2(5,-10),p3; p3=p1+p2; cout<<"p1=";p1.display(); cout<<"p2=";p2.display(); cout<<"p1+p2=";p3.display(); return 0; } (2) 设计一个复数类Complex,重载运算符“*”,“/”,使之能用于复数的乘除。运算符 重载函数作为Complex类的成员函数。 // 1234.cpp : 定义控制台应用程序的入口点。 // #include"stdafx.h" #include using namespace std; class Complex {public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} Complex operator*(Complex &c2); Complex operator/(Complex &c2); void display(); private: double real; double imag; }; Complex Complex::operator*(Complex &c2) {Complex c; c.real=real*c2.real-imag*c2.imag; c.imag=imag*c2.real+real*c2.imag; return c;} Complex Complex::operator/(Complex &c2) {Complex c; c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag); c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag); return c;} void Complex::display() {cout<<"("< int main() {Complex c1(8,10),c2(9,-18),c3; c3=c1*c2; cout<<"c1*c2="; c3.display(); c3=c1/c2; cout<<"c1/c2="; c3.display(); return 0; } (3) 设计一个长方形类Triangle,包含长和宽两个私有数据成员。要求重载运算符“+”, 以实现多个矩形对象的面积之和。 // 1234.cpp : 定义控制台应用程序的入口点。 // #include"stdafx.h" #include using namespace std; //(3) 设计一个长方形类Triangle,包含长和宽两个私有数据成员。要求重载运算符“+”,以实现多个矩形对象的面积之和。 class rectangle { private : int a,b; protected :int area; public: rectangle () { a=0,b=0,area=0; } rectangle (int ra,int rb) { a=ra; b=rb; area=ra*rb; } rectangle operator+(rectangle &r2); void display(); }; rectangle rectangle:: operator+(rectangle &r2) { rectangle r; r.area=area+r2.area ; return r; } void rectangle ::display() {