C++day4作业

  1. 定义一个Person类,私有成员int age,string &name,定义一个Stu类,包含私有成员double *score,写出两个类的构造函数、析构函数、拷贝构造和拷贝赋值函数,完成对Person的运算符重载(算术运算符、条件运算符、逻辑运算符、自增自减运算符、插入/提取运算符)

#include <iostream>
using namespace std;class Person
{int age;string &name;
public://构造函数void show();void show1();Person(string &a):name(a){}Person(int a,string &b):age(a),name(b){}//拷贝构造函数Person(const Person &other):age(other.age),name(other.name){}//拷贝赋值函数Person &operator=(const Person &other){this->age=other.age;this->name=other.name;return *(this);}//算数运算符Person operator+(Person &other);//类内定义friend Person operator+(Person a1,Person a2);//类外定义Person operator-(Person &other);//类内定义friend Person operator-(Person a1,Person a2);//类外定义Person operator*(Person &other);//类内定义friend Person operator*(Person a1,Person a2);//类外定义Person operator/(Person &other);//类内定义friend Person operator/(Person a1,Person a2);//类外定义Person operator%(Person &other);//类内定义friend Person operator%(Person a1,Person a2);//类外定义//条件运算符bool operator>(Person &other);//类内定义friend bool operator>(Person a1,Person a2);//类外定义bool operator>=(Person &other);//类内定义friend bool operator>=(Person a1,Person a2);//类外定义bool operator<(Person &other);//类内定义friend bool operator<(Person a1,Person a2);//类外定义bool operator<=(Person &other);//类内定义friend bool operator<=(Person a1,Person a2);//类外定义bool operator==(Person &other);//类内定义friend bool operator==(Person a1,Person a2);//类外定义bool operator!=(Person &other);//类内定义friend bool operator!=(Person a1,Person a2);//类外定义//逻辑运算符bool operator&&(Person &other);//类内定义friend bool operator&&(Person a1,Person a2);//类外定义bool operator||(Person &other);//类内定义friend bool operator||(Person a1,Person a2);//类外定义//自增自减运算符Person operator++(int);//类内定义后置++friend Person operator++(Person &other,int);//类外定义后置++Person operator++();//类内定义前置++friend Person operator++(Person &other);//类外定义前置++Person operator--(int);//类内定义后置++friend Person operator--(Person &other,int);//类外定义后置--Person operator--();//类内定义前置--friend Person operator--(Person &other);//类外定义前置--//插入提取运算符friend ostream &operator<<(ostream &out,Person &other);friend istream &operator>>(istream &in,Person &other);//析构函数~Person(){}
};class Stu
{double *score;
public:void show();//构造函数Stu(){}Stu(double score):score(new double(score)){}//拷贝构造函数Stu(const Stu& other):score(new double(*other.score)){}//拷贝赋值函数Stu &operator=(const Stu &other){*(this->score) = *(other.score);return (*this);}//析构函数~Stu(){}
};void Person::show()
{cout << "age= " << age << endl;cout << "name=" << name << endl;
}
void Person::show1()
{cout << "age= " << age << endl;
}void Stu::show()
{cout << "*score= " << *score << endl;
}Person Person::operator+(Person &other)
{string str("zhangsan");Person temp(str);temp.age=this->age+other.age;//temp.name=this->name+other.name;return temp;
}
Person operator+(Person a1,Person a2)
{string str("aaa");Person temp(str);temp.age=a1.age+a2.age;//temp.name=a1.name+a2.name;return temp;
}
Person Person::operator-(Person &other)
{string str("zhangsan");Person temp(str);temp.age=this->age-other.age;//temp.name=this->name+other.name;return temp;
}
Person operator-(Person a1,Person a2)
{string str("aaa");Person temp(str);temp.age=a1.age-a2.age;//temp.name=a1.name+a2.name;return temp;
}
Person Person::operator*(Person &other)
{string str("zhangsan");Person temp(str);temp.age=this->age*other.age;//temp.name=this->name+other.name;return temp;
}
Person operator*(Person a1,Person a2)
{string str("aaa");Person temp(str);temp.age=a1.age*a2.age;//temp.name=a1.name+a2.name;return temp;
}
Person Person::operator/(Person &other)
{string str("zhangsan");Person temp(str);temp.age=this->age/other.age;//temp.name=this->name+other.name;return temp;
}
Person operator/(Person a1,Person a2)
{string str("aaa");Person temp(str);temp.age=a1.age/a2.age;//temp.name=a1.name+a2.name;return temp;
}
Person Person::operator%(Person &other)
{string str("zhangsan");Person temp(str);temp.age=this->age%other.age;//temp.name=this->name+other.name;return temp;
}
Person operator%(Person a1,Person a2)
{string str("aaa");Person temp(str);temp.age=a1.age%a2.age;//temp.name=a1.name+a2.name;return temp;
}bool operator>(Person a1,Person a2)
{return a1.age > a2.age;}
bool Person::operator>(Person &a1)
{return this->age > a1.age;
}
bool operator>=(Person a1,Person a2)
{return a1.age >= a2.age;}
bool Person::operator>=(Person &a1)
{return this->age >= a1.age;
}
bool operator<=(Person a1,Person a2)
{return a1.age <= a2.age;}
bool Person::operator<=(Person &a1)
{return this->age <= a1.age;
}
bool operator<(Person a1,Person a2)
{return a1.age < a2.age;}
bool Person::operator<(Person &a1)
{return this->age < a1.age;
}
bool operator==(Person a1,Person a2)
{return a1.age == a2.age;}
bool Person::operator==(Person &a1)
{return this->age == a1.age;
}
bool operator!=(Person a1,Person a2)
{return a1.age != a2.age;}
bool Person::operator!=(Person &a1)
{return this->age >= a1.age;
}bool Person::operator&&(Person &other)
{return this->age && other.age;
}
bool operator&&(Person a1,Person a2)
{return a1.age && a2.age;
}
bool Person::operator||(Person &other)
{return this->age || other.age;
}
bool operator||(Person a1,Person a2)
{return a1.age || a2.age;
}Person Person::operator++(int)
{string str="zhangsan";Person temp(str);temp.age = this->age++;return temp;
}Person operator++(Person &other,int)
{string str="zhangsan";Person temp(str);temp.age=other.age++;return temp;
}
Person Person::operator++()
{++(this->age);return (*this);
}
Person operator++(Person &other)
{++(other.age);return other;
}
Person Person::operator--(int)
{string str="zhangsan";Person temp(str);temp.age = this->age--;return temp;
}Person operator--(Person &other,int)
{string str="zhangsan";Person temp(str);temp.age=other.age--;return temp;
}
Person Person::operator--()
{--(this->age);return (*this);
}
Person operator--(Person &other)
{--(other.age);return other;
}ostream &operator<<(ostream &out,Person &other)
{out << other.age << endl;return out;
}
istream &operator>>(istream &out,Person &other)
{out >> other.age;return out;
}int main()
{cout << "---person构造函数---" << endl;string str="shangsan";Person a1(1,str);a1.show();cout << "---person拷贝构造函数---" << endl;Person a2=a1;a2.show();cout << "---person拷贝赋值函数---" << endl;Person a3(str);a3=a1;a3.show();cout << "---Stu构造函数---" << endl;Stu b1(100);b1.show();cout << "---stu拷贝构造函数---" << endl;Stu b2=b1;b2.show();cout << "---stu拷贝赋值函数---" << endl;Stu b3;b3=b1;b3.show();string str1("hello");string str2(" world");Person a4(10,str1);Person a5(50,str2);Person a6=operator+(a4,a5);a6.show1();a6=operator-(a4,a5);a6.show1();a6=operator*(a4,a5);a6.show1();a6=operator/(a4,a5);a6.show1();a6=operator%(a4,a5);a6.show1();bool c1=operator>(a4,a5);bool c2=a4.operator>(a5);cout << "c1= " << c1 << endl;cout << "c2= " << c2 << endl;c1=operator>=(a4,a5);c2=a4.operator>=(a5);cout << "c1= " << c1 << endl;cout << "c2= " << c2 << endl;c1=operator<(a4,a5);c2=a4.operator<(a5);cout << "c1= " << c1 << endl;cout << "c2= " << c2 << endl;c1=operator<=(a4,a5);c2=a4.operator<=(a5);cout << "c1= " << c1 << endl;cout << "c2= " << c2 << endl;c1=operator==(a4,a5);c2=a4.operator==(a5);cout << "c1= " << c1 << endl;cout << "c2= " << c2 << endl;c1=operator!=(a4,a5);c2=a4.operator!=(a5);cout << "c1= " << c1 << endl;cout << "c2= " << c2 << endl;c1=operator&&(a4,a5);c2=a4.operator&&(a5);cout << "c1= " << c1 << endl;cout << "c2= " << c2 << endl;cout << "aaaa" << endl;Person a7=a4.operator++();a7.show1();a7=operator++(a4);a7.show1();a7=a5.operator++(10);a7.show1();a7=operator++(a5,10);a7.show1();a7=a4.operator--();a7.show1();a7=operator--(a4);a7.show1();a7=a5.operator--(10);a7.show1();a7=operator--(a5,10);a7.show1();cout<<a4 << a5 << endl;operator<<(cout,a4);operator<<(cout,a5);Person a8(str);cin>>a8;a8.show1();operator>>(cin,a8);a8.show1();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/586745.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java企业网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web企业网站系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

科技创新实验室数据管理优选:高效企业网盘推荐

科技创新实验室建设是国家加强科技创新基本能力建设的重要措施&#xff0c;企业网盘等高效办公工具的应用是保证科技创新实验室正常运行、提高科研项目团队合作效率的重要手段。 本文将介绍企业网盘Zoho WorkDrive提供的解决方案&#xff1a; 行业痛点1&#xff1a;分散的数据…

听GPT 讲Rust源代码--src/tools(39)

File: rust/src/tools/rustfmt/src/config/config_type.rs 在Rust代码中&#xff0c;rust/src/tools/rustfmt/src/config/config_type.rs文件的作用是定义了与配置相关的数据结构和函数。 Config struct&#xff08;配置结构体&#xff09;&#xff1a;该结构体用于存储rustfmt…

图形化编程(3)之猜拳的加速度计

今天说我们来学习图形化第三节内容&#xff0c;加速度计。加速度传感器是一种能够测量物体加速度的传感器&#xff0c;在运动过程中&#xff0c;通过测量质量的惯性力和牛顿第二定律得到加速度。 根据传感器敏感元件的不同&#xff0c;常见的加速度传感器有电容式、电感式、应变…

zookeeper之集群搭建

1. 集群角色 zookeeper集群下&#xff0c;有3种角色&#xff0c;分别是领导者(Leader)、跟随着(Follower)、观察者(Observer)。接下来我们分别看一下这三种角色的作用。 领导者(Leader)&#xff1a; 事务请求&#xff08;写操作&#xff09;的唯一调度者和处理者&#xff0c;保…

音频播放软件Foobar2000 mac特点介绍

Foobar2000 mac是一款高度可定制的音频播放器&#xff0c;适用于Windows平台。它支持各种音频格式&#xff0c;包括MP3、FLAC、AAC、WMA等&#xff0c;同时也支持各种音频插件和效果器&#xff0c;可以提供更好的音质和用户体验。 Foobar2000 mac软件特点 1. 高度可定制&#…

信号类型——正交频分复用(OFDM)

系列文章目录 《信号类型&#xff08;通信&#xff09;——仿真》 《信号类型&#xff08;通信&#xff09;——QAM调制信号》 《信号类型&#xff08;通信&#xff09;——QPSK、OQPSK、IJF_OQPSK调制信号》 《信号类型&#xff08;通信&#xff09;——最小频移键控&…

【C语言】分支与循环语句

什么是语句&#xff1f; C语句可分为以下五类&#xff1a; 表达式语句函数调用语句控制语句 &#xff08;本篇重点介绍&#xff09;复合语句空语句 控制语句用于控制程序的执行流程&#xff0c;以实现程序的各种结构方式。C语言支持三种结构&#xff1a; 顺序结构选择结构循…

软件设计师——软件工程(三)

&#x1f4d1;前言 本文主要是【软件工程】——软件设计师——软件工程的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304…

使用SecoClient软件连接L2TP

secoclient软件是华为防火墙与友商设备进行微屁恩对接的一款软件,运行在windows下可以替代掉win系统自带的连接功能,因为win系统自带的连接功能总是不可用而且我照着网上查到的各种方法调试了很久都调不好,导致我一度怀疑是我的服务没搭建好,浪费了大把时间去研究其他搭建方案 …

最新Redis7哨兵模式(保姆级教学)

一定一定要把云服务器的防火墙打开一定要&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;否则不成功&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&…

AppWeb认证绕过漏洞(CVE-2018-8715)

一、环境搭建 二、影响版本 三、构造payload Authorization: Digest usernameadmin 四、抓包获取sesion 五、修改数据包、认证头 记得设置用户名 六、漏洞存在特征&#xff08;Gigest&#xff09;

基于AM62x的ARM+FPGA+Codesys低成本软PLC解决方案

GPMC并口简介 GPMC(General Purpose Memory Controller)是TI处理器特有的通用存储器控制器接口&#xff0c;支持8/16bit数据位宽&#xff0c;支持128MB访问空间&#xff0c;最高时钟速率133MHz。GPMC是AM62x、AM64x、AM437x、AM335x、AM57x等处理器专用于与外部存储器设备的接口…

2023年新一代开发者工具 Vue ,正式开源!

以下文章来源于前端充电宝 &#xff0c;作者CUGGZ 近日&#xff0c;Vue 新一代开发者工具&#xff08;DevTools&#xff09;正式开源&#xff01;Vue DevTools 是一个旨在增强 Vue 开发人员体验的工具&#xff0c;它提供了一些功能来帮助开发者更好地了解 Vue 应用。下面就来看…

小程序入门-登录+首页

正常新建一个登录页面 创建首页和TatBar&#xff0c;实现登录后底部出现两个按钮 代码 "pages": ["pages/login/index","pages/index/index","pages/logs/logs" ],"tabBar": {"list": [{"pagePath"…

Hexo 部署 Github Pages, Github Actions自动部署

想整个静态的博客部署在github pages 历经两天的折磨终于是摸索成功了&#xff0c;官网的文档太简陋了&#xff0c;很多东西没说清楚。 欢迎大家访问我的博客&#xff01; CanyueThis is Canyues blog.https://mobeicanyue.github.io/ 最终实现的效果&#xff0c;一个项目仓库…

51单片机之LED灯

51单片机之LED灯 &#x1f334;前言&#xff1a;&#x1f3ee;点亮LED灯的原理&#x1f498;点亮你的第一个LED灯&#x1f498;点亮你的八个LED灯 &#x1f4cc;让LED灯闪烁的原理&#x1f3bd; LED灯的闪烁&#x1f3d3;错误示范1&#x1f3d3;正确的LED闪烁代码应该是这样&am…

PythonTSK Study for first day (paper read)

HTSK model Study AbstractIntroductionII TSK for high-dimentional datasetIII ResultsA DatesetB AlgorithmC性能评估 Abstract The TSK Fuzzy System with Gaussian membership functions can not address high dimentional datasets, if add softmax function to solve i…

day14--JDK8~17新特性(下):

第18章_JDK8-17新特性&#xff08;下&#xff09; 讲师&#xff1a;尚硅谷-宋红康&#xff08;江湖人称&#xff1a;康师傅&#xff09; 官网&#xff1a;http://www.atguigu.com 6. 新语法结构 新的语法结构&#xff0c;为我们勾勒出了 Java 语法进化的一个趋势&#xff0c…

CSP CCF 202305-1 重复局面 C++满分题解

#include<iostream> using namespace std;int judge(char arr[][64],int m) {int a1;for(int i0;i<m;i){int flag0;for(int j0;j<64;j){if(arr[i][j]!arr[m][j]){flag1;break;}}if(flag0)a;}return a; }int main() {int n;cin>>n;char arr[n][64]; //直接看…