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.rhkb.cn/news/229154.html

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

相关文章

IRQ Handler 的使用——以USART串口接收中断分别在标准库与HAL库版本下的举例

前言&#xff1a; 1.中断系统及EXTI外部中断知识点见我的博文&#xff1a; 9.中断系统、EXTI外部中断_eirq-CSDN博客文章浏览阅读301次&#xff0c;点赞7次&#xff0c;收藏6次。EXTI&#xff08;Extern Interrupt&#xff09;外部中断EXTI可以监测指定GPIO口的电平信号&…

Redis(认识NoSQL,认识redis,安装redis,redis桌面客户端,redis常见命令,redis的Java客户端)

文章目录 Redis快速入门1.初识Redis1.1.认识NoSQL1.1.1.结构化与非结构化1.1.2.关联和非关联1.1.3.查询方式1.1.4.事务1.1.5.总结 1.2.认识Redis1.3.安装Redis1.3.1.依赖库1.3.2.上传安装包并解压1.3.3.启动1.3.4.默认启动1.3.5.指定配置启动1.3.6.开机自启 1.4.Redis桌面客户端…

病情聊天机器人,利用Neo4j图数据库和Elasticsearch全文搜索引擎相结合

项目设计目的&#xff1a; 本项目旨在开发一个病情聊天机器人&#xff0c;利用Neo4j图数据库和Elasticsearch全文搜索引擎相结合&#xff0c;实现对病情相关数据的存储、查询和自动回答。通过与用户的交互&#xff0c;机器人可以根据用户提供的症状描述&#xff0c;给出初步的可…

Linux---进程控制

一、进程创建 fork函数 在Linux中fork函数是非常重要的函数&#xff0c;它从已存在进程中创建一个新进程&#xff0c;原进程为父进程 fork函数的功能&#xff1a; 分配新的内存和内核数据结构给子进程将父进程部分数据结构内容拷贝至子进程添加子进程到系统的进程列表中fork返…

听GPT 讲Rust源代码--library/portable-simd

File: rust/library/portable-simd/crates/core_simd/examples/spectral_norm.rs spectral_norm.rs是一个示例程序&#xff0c;它展示了如何使用Portable SIMD库中的SIMD&#xff08;Single Instruction Multiple Data&#xff09;功能来实现频谱规范化算法。该示例程序是Rust源…

如何使用SeaFile搭建本地私有云盘并结合cpolar实现远程访问

文章目录 1. 前言2. SeaFile云盘设置2.1 SeaFile的安装环境设置2.2 SeaFile下载安装2.3 SeaFile的配置 3. cpolar内网穿透3.1 Cpolar下载安装3.2 Cpolar的注册3.3 Cpolar云端设置3.4 Cpolar本地设置 4.公网访问测试5.结语 1. 前言 现在我们身边的只能设备越来越多&#xff0c;…

从零开始:使用 BIND 构建和管理您的 DNS 服务器

1 前言 在这篇文章中&#xff0c;我将详细介绍如何使用 BIND&#xff08;Berkeley Internet Name Domain&#xff09;软件包中的 named 程序来配置和管理一个基本的 DNS 服务器。 从安装 BIND 开始&#xff0c;到设置 DNS 区域文件&#xff0c;再到运行和测试您的服务器&#x…

typescript 中 infer 用法

infer 介绍 infer 一般在 extends 子语句中,infer 会引入一个待推断的类型变量 (如 infer R) R可以是任意单词字母 这个推断的类型变量可以在有条件类型的 true 分支中被引用 允许出现多个同类型变量的 infer。 基本示例 type ParamType<T> T extends (arg: infer…

kubeadm创建k8s集群

kubeadm来快速的搭建一个k8s集群&#xff1a; 二进制搭建适合大集群&#xff0c;50台以上。 kubeadm更适合中下企业的业务集群。 部署框架 master192.168.10.10dockerkubelet kubeadm kubectl flannelnode1192.168.10.20dockerkubelet kubeadm kubectl flannelnode2192.168.1…

新火种AI|福布斯Top50,估值高达50亿,这家AI法律公司令人震惊

2023年3月&#xff0c;OpeAI以雷霆之势推出了ChatGPT&#xff0c;为AI产业带来了颠覆性的进展&#xff0c;让所有人为之震惊。其中有一项对于ChatGPT的测试还引起了了不小的轰动&#xff0c;当时美国伊利诺伊理工大学芝加哥肯特法学院称&#xff0c;GPT-4通过了美国律师资格考试…

嵌入式视频播放器(mplayer)

1.文件准备&#xff1a; MPlayer-1.0rc2.tar.bz2 libmad-0.15.1b.tar.gz 直接Git到本地 git clone https://gitee.com/zxz_FINE/mplayer_tarball.git 2.文件夹准备&#xff1a; src存放解压后的源码文件&#xff0c;target_Mplayer存放编译安装的目标文件 mkdir src targe…

将本地工作空间robot_ws上传到gitee仓库

git config --global user.name "geniusChinaHN" git config --global user.email "12705243geniuschinahnuser.noreply.gitee.com" cd ~/robot_ws #git init#创建原始仓库时候用 git add . git commit -m "上传文件内容描述" #git remote add r…

​iOS实时查看App运行日志

目录 一、设备连接 二、使用克魔助手查看日志 三、过滤我们自己App的日志 &#x1f4dd; 摘要&#xff1a; 本文介绍了如何在iOS iPhone设备上实时查看输出在console控制台的日志。通过克魔助手工具&#xff0c;我们可以连接手机并方便地筛选我们自己App的日志。 &#x1f4…

009:vue结合el-table实现表格行拖拽排序(基于sortablejs)

文章目录 1. 实现效果2. 安装 sortablejs 插件3. 完整组件代码4. 注意点 1. 实现效果 2. 安装 sortablejs 插件 sortablejs 更多用法 cnpm i --save sortablejs3. 完整组件代码 <template><div class"home"><div class"body"><el-ta…

pytorch深度学习笔记(共计169页,基于本人听完B站小土堆PyTorch深度学习快速入门教程所写)

一、笔记视频 pytorch深度学习&#xff08;共计169页&#xff0c;基于本人听完B站小土堆PyTorch深度学习快速入门教程所写&#xff09; 二、获取方式 方式一&#xff1a; 点击下面的链接 pytorch深度学习笔记 如果链接无法打开 直接复制下方链接即可 https://mall.bilibili.c…

appium入门基础

介绍 appium支持在不同平台的UI自动化&#xff0c;如web,移动端,桌面端等。还支持使用java&#xff0c;python&#xff0c;js等语言编写自动化代码。主要用于自动化测试脚本&#xff0c;省去重复的手动操作。 Appium官网 安装 首先必须环境有Node.js用于安装Appium。 总体来…

【前缀和】【分类讨论】【二分查找】2983:回文串重新排列查询

作者推荐 【动态规划】【字符串】C算法&#xff1a;正则表达式匹配 本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 二分查找算法合集 回文串重新排列查询 给你一个长度为 偶数 n &#xff0c;下标从 0 开始的字符…

Pandas数据可视化

pandas库是Python数据分析的核心库 它不仅可以加载和转换数据&#xff0c;还可以做更多的事情&#xff1a;它还可以可视化 pandas绘图API简单易用&#xff0c;是pandas流行的重要原因之一 Pandas 单变量可视化 单变量可视化&#xff0c; 包括条形图、折线图、直方图、饼图等 …

精确率(Precision,P),召回率(Recall,R)以及F1值(F1-score,F1)

狗狗识别系统的例子&#xff1a; 假设我们有两个集合&#xff1a; 实际狗狗的集合&#xff08;实际真正是狗狗的图片&#xff09;&#xff1a;A我们识别为狗狗的集合&#xff08;我们认为是狗狗的图片&#xff09;&#xff1a;B 精确率&#xff08;Precision&#xff0c;P&am…

Codeium在IDEA里的3个坑

转载自Codeium在IDEA里的3个坑&#xff1a;无法log in&#xff0c;downloading language server和中文乱码_downloading codeium language server...-CSDN博客文章浏览阅读1.7w次&#xff0c;点赞26次&#xff0c;收藏47次。Codeium安装IDEA插件的3个常见坑_downloading codeiu…