【C++】——运算符重载

🎃个人专栏:

🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客

🐳Java基础:Java基础_IT闫的博客-CSDN博客

🐋c语言:c语言_IT闫的博客-CSDN博客

🐟MySQL:数据结构_IT闫的博客-CSDN博客

🐠数据结构:​​​​​​数据结构_IT闫的博客-CSDN博客

💎C++:C++_IT闫的博客-CSDN博客

🥽C51单片机:C51单片机(STC89C516)_IT闫的博客-CSDN博客

💻基于HTML5的网页设计及应用:基于HTML5的网页设计及应用_IT闫的博客-CSDN博客​​​​​​

🥏python:python_IT闫的博客-CSDN博客

欢迎收看,希望对大家有用!

目录

🎯第一题:

[🎯 第二题:](#🎯 第二题:)

[🎯 第三题:](#🎯 第三题:)

[🎯 答案:](#🎯 答案:)

💻第一题:

💻第二题:

💻第三题:

🎯第一题:

设计一个复数类Complex,包含成员变量实部real和虚部imag;运算符重载+/-实现两个复数加、减的功能。在主函数里创建两个复数对象,分别求两个复数的和与差,在主函数里显示运算结果。效果如图:

🎯 第二题:

现有一学生类定义:

class Student{

........

private:

int _id;

string _name;

char *_addr;

};

实现学生类的赋值运算符=重载,主函数调用赋值运算符并输出对象信息。

🎯 第三题:

编写一个程序,声明一个2行2列矩阵类Matrix,重载运算符"+",使之能用于矩阵的加法运算。重载流插入运算符"<<"和流提取运算符">>",使之能用于该矩阵的输入与输出。从键盘输入两个矩阵a和b,求两个矩阵之和并输出。效果如图:

🎯 答案:

💻第一题:

cpp 复制代码
#include <iostream>

using namespace std;

class Complex {

private:

double real;

double imag;

public:

Complex(double x=0,double y=0):real(x),imag(y) {}

void show() const; //输出数据

friend Complex operator+(const Complex& a1, const Complex& a2) ; //重载为类的友元函数

friend Complex operator-(const Complex& a1, const Complex& a2);//重载为类的友元函数

};

/******************************************************************/

void Complex::show() const {

if(imag>=0)

cout<<real<<"+"<<imag<<"i"<<endl;

else

cout<<real<<imag<<"i"<<endl;

}

Complex operator+(const Complex& a1,const Complex& a2) {

return Complex(a1.real+a2.real,a1.imag+a2.imag);

}

Complex operator-(const Complex& a1,const Complex& a2) {

return Complex(a1.real-a2.real,a1.imag-a2.imag);

}

/******************************************************************/

int main() {

Complex c1(5.1,3.4);

Complex c2(3.6,5.3);

Complex c;

cout<<"c1:";

c1.show();

cout<<"c2:";

c2.show();

c=c1+c2;

cout<< "c1+c2:";

c.show();

c=c1-c2;

cout<<"c1-c2:";

c.show();

return 0;

}

💻第二题:

cpp 复制代码
#include <iostream>

#include <cstring>

using namespace std;

class Student {

private:

int _id;

string _name;

char *_addr;

public:

Student(int id,string name,const char *addr);

Student();

Student& operator=(Student& stu);

void show();

};

Student::Student() {}

Student::Student(int id,string name,const char *addr) {

/******************************************/ 

_id=id;

_name=name;

this->_addr=new char[strlen(addr)+1];

if(_addr)     strcpy(_addr,addr);

/******************************************/ 

}

Student& Student::operator=(Student& stu) {

//注意深拷贝

/******************************************/ 

_id=stu._id;

_name=stu._name;

_addr=new char[strlen(stu._addr)+1];

if(_addr)     strcpy(_addr,stu._addr);

return *this;

/******************************************/ 

}

void Student::show() {

cout<<"学号:"<<_id<<endl;

cout<<"姓名:"<<_name<<endl;

cout<<"住址:"<<_addr<<endl;

}

int main() {

Student stu2,stu1(10001,"zhangsan","luoyang");

stu1.show();

stu2=stu1;

stu2.show();

return 0;

}

💻第三题:

cpp 复制代码
#include <iostream>

#include <iomanip>

using namespace std;

class Matrix {

private:

int a[2][2];

friend istream& operator>>(istream& is,Matrix& _m);

friend ostream& operator<<(ostream& os,Matrix& _m);

friend Matrix  operator+(const Matrix& mat1,const Matrix& mat2);

};

ostream& operator<<(ostream& os,Matrix& _m) {

//每个数4列 setw(4)

for(int i=0; i<2; i++) {

for(int j=0; j<2; j++)

os<<setw(4)<<_m.a[i][j];

os<<endl;

}

return os;

}

/****************************************************/

istream& operator>>(istream& is,Matrix& _m) {

for(int i=0; i<2; i++)

for(int j=0; j<2; j++)

is>>_m.a[i][j];

return is;

}

Matrix  operator+(const Matrix& mat1,const Matrix& mat2) {

Matrix mat;

for(int i=0; i<2; i++)

for(int j=0; j<2; j++) {

mat.a[i][j]=mat1.a[i][j]+mat2.a[i][j];

}

return mat;

}

/****************************************************/

int main() {

Matrix m1,m2,m;

cout<<"input matrix m1:"<<endl;

cin>>m1;

cout<<"input matrix m2:"<<endl;

cin>>m2;

m=m1+m2;

cout<<"output matrix m:"<<endl;

cout<<m;

return 0;

}
相关推荐
小飞猪Jay31 分钟前
C++面试速通宝典——13
jvm·c++·面试
Kalika0-042 分钟前
猴子吃桃-C语言
c语言·开发语言·数据结构·算法
_.Switch44 分钟前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
代码雕刻家1 小时前
课设实验-数据结构-单链表-文教文化用品品牌
c语言·开发语言·数据结构
一个闪现必杀技1 小时前
Python入门--函数
开发语言·python·青少年编程·pycharm
Fan_web1 小时前
jQuery——事件委托
开发语言·前端·javascript·css·jquery
龙图:会赢的1 小时前
[C语言]--编译和链接
c语言·开发语言
rjszcb1 小时前
一文说完c++全部基础知识,IO流(二)
c++
小字节,大梦想2 小时前
【C++】二叉搜索树
数据结构·c++
吾名招财2 小时前
yolov5-7.0模型DNN加载函数及参数详解(重要)
c++·人工智能·yolo·dnn