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

编程入门 行业动态 更新时间:2024-10-22 05:08:26

【C++】——<a href=https://www.elefans.com/category/jswz/34/1771114.html style=运算符重载"/>

【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,求两个矩阵之和并输出。效果如图:

 

🎯 答案:

💻第一题:

#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;elsecout<<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;}

💻第二题:

#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;}

💻第三题:

#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;}

更多推荐

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

本文发布于:2023-11-14 14:30:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1587801.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:运算符

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!