0825|C++day5 运算符重载+静态成员+类的基础【Xmind+实例】

一、运算符重载

 实例:(赋值运算符、自增自减运算符、插入提取运算符)

#include <iostream>using namespace std;class Person
{friend Person & operator+=(Person &L,const Person &R);friend Person & operator++(Person &O);friend const Person operator++(Person &O,int);friend ostream & operator<<(ostream & cout,const Person &p);friend istream & operator>>(istream &cin,Person &p);int a;int b;
public://无参构造函数Person() {}//有参构造函数Person(int a,int b):a(a),b(b){}//成员函数实现+=运算符重载
//    Person & operator+=(const Person &R)
//    {
//        a += R.a;
//        b += R.b;
//        return *this;
//    }//成员函数实现前++运算符重载
//    Person & operator++()
//    {
//        ++a;
//        ++b;
//        return *this;
//    }//成员函数实现后++运算符重载
//    const Person operator++(int)
//    {
//        Person temp;
//        temp.a = a++;
//        temp.b = b++;
//        return temp;
//    }void show(){cout << "a = " << a << endl;cout << "b = " << b << endl;}
};//全局函数实现+=运算符重载
Person & operator+=(Person &L,const Person &R)
{L.a += R.a;L.b += R.b;return L;
}//全局函数实现前++运算符重载
Person & operator++(Person &O)
{++O.a;++O.b;return O;
}
//全局函数实现后++运算符重载
const Person operator++(Person &O,int)
{Person temp;temp.a = O.a++;temp.b = O.b++;return temp;
}//全局函数实现插入
ostream & operator<<(ostream &cout,const Person &p)
{cout << p.a << endl;cout << p.b << endl;return  cout;
}
//全局函数实现提取
istream & operator>>(istream &cin,Person &p)
{cin >> p.a;cin >> p.b;return cin;
}
int main()
{Person p1(10,10);Person p2(20,20);cout << "--------- 实现+= ----------" << endl;//+=p1 += p2;p1.show();cout << "-------- 实现 前++ ---------" << endl;//前++Person p3(10,10);p1 = ++p3;p3.show();p1.show();cout << "-------- 实现 后++ ----------" << endl;//后++Person p4(10,10);p4 = p2++;p2.show();p4.show();cout << "-------- 实现cout ----------" << endl;cout << p1;cout << "-------- 实现cin ----------" << endl;cin >> p2;cout << p2;return 0;
}

二、静态成员

银行账户实例 

#include <iostream>using namespace std;//封装银行账户 类
class BankAccount
{
private:double balance; //余额static double interest_rate; //利率  静态数据成员 属于类的public://无参构造BankAccount() {}//有参构造函数BankAccount(double b):balance(b){}//静态成员函数 获取当前的利率static double getInterestRate(){return interest_rate;}//静态成员函数,设置当前利率static void setInterestRate(double rate){interest_rate = rate;}//静态成员函数 获取连本带利的余额static double getLastMoney(BankAccount &account){return account.balance*(1+interest_rate);}
};double BankAccount::interest_rate = 0.05;  //在类外初始化 静态数据成员int main()
{cout << "当前利率:" << BankAccount::getInterestRate() << endl;BankAccount::setInterestRate(0.03);cout << "当前利率:" << BankAccount::getInterestRate() << endl;BankAccount account1(1000.0);BankAccount account2(2000.0);cout << "第一个人连本带利的余额:" << BankAccount::getLastMoney(account1) << endl;return 0;
}

三、类的继承

实例

#include <iostream>using namespace std;class Person //父类
{
private:string name;int age;
public://无参构造函数Person(){cout << "父类的无参构造函数" << endl;}//有参构造函数Person(string name, int age):name(name),age(age){cout << "父类的有参构造函数" << endl;}//拷贝构造函数Person(Person const &other):name(other.name),age(other.age){cout << "父类的拷贝构造函数" << endl;}//拷贝赋值函数Person & operator=(const Person &p){name = p.name;age = p.age;cout << "父类的拷贝赋值函数" << endl;return *this;}void show(){cout << "父类的show函数" << endl;}~Person(){cout << "父类的析构函数" << endl;}
};class Stu:public Person // 子类/派生类
{
private:int id;int math;
public://无参构造函数Stu(){cout << "子类的无参构造函数" << endl;}//有参构造函数Stu(string name, int age, int id, int math):Person(name,age),id(id),math(math){cout << "子类的有参构造函数" << endl;}//子类的拷贝构造函数Stu(Stu const &p):id(p.id),math(p.math),Person(p){cout << "子类的拷贝构造函数" << endl;}//子类的拷贝赋值函数Stu & operator=(const Stu &p){Person::operator=(p);id = p.id;math = p.math;cout << "子类的拷贝构造函数" << endl;return *this;}void show(){cout << "子类的show函数" << endl;}~Stu(){cout << "子类的析构函数" << endl;}
};
int main()
{
//    cout << "----------------------无参构造函数-------" << endl;
//    Stu p;//    cout << "----------------------有参构造函数-------" << endl;
//    Stu p1("张三",8,1,99);//    cout << "----------------------拷贝构造函数-------" << endl;
//    Stu p2=p1;//    cout << "----------------------show函数-------" << endl;
//    p2.show();
//    p2.Person::show();Stu p1("张三",8,1,99);cout << "----------------------拷贝赋值函数-------" << endl;Stu p2;p2 = p1;return 0;
}

四、多继承

 实例

#include <iostream>using namespace std;
class Sofa
{
private:string sitting;
public://无参构造函数Sofa(){cout<< "Sofa的无参构造函数" << endl;}//有参构造函数Sofa(string sitting):sitting(sitting){cout<< "Sofa的有参构造函数" << endl;}void show(){cout << sitting << endl;}
};
class Bed
{
private:string sleep;
public://无参构造函数Bed(){cout<< "Sofa的无参构造函数" << endl;}//有参构造函数Bed(string sleep):sleep(sleep){cout<< "Sofa的有参构造函数" << endl;}void show(){cout << sleep << endl;}
};class Sofa_Bed:public Sofa,public Bed
{
private:int w;
public://无参构造函数Sofa_Bed(){cout<< "沙发床的无参构造函数" << endl;}//有参构造函数Sofa_Bed(string sit,string sleep,int w):Sofa(sit),Bed(sleep),w(w){cout<< "沙发床的有参构造函数" << endl;}
};
int main()
{//Sofa_Bed s;Sofa_Bed s1("可坐","可睡",5);s1.Sofa::show();s1.Bed::show();return 0;
}

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

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

相关文章

Jira vs Trello:项目管理的深层巅峰对决

引言 项目管理在现代企业运作中起着至关重要的作用。从跨国公司的巨大项目&#xff0c;到创业公司的快速反应&#xff0c;再到个人的日常任务管理&#xff0c;一个好的项目管理工具可以有效地跟踪进度&#xff0c;优化资源分配&#xff0c;确保项目在预定时间内完成。今天&…

数字 IC 设计职位经典笔/面试题(三)

共100道经典笔试、面试题目&#xff08;文末可全领&#xff09; 1. IC 设计中同步复位与异步复位的区别&#xff1f; 同步复位在时钟沿变化时&#xff0c;完成复位动作。异步复位不管时钟&#xff0c;只要复位信号满足条件&#xff0c;就完成复位动作。异步复位对复位信号要求…

软考高级系统架构设计师系列论文九十七:论软件三层结构的设计

软考高级系统架构设计师系列论文九十七:论软件三层结构的设计 一、软件结构相关知识点二、摘要三、正文四、总结一、软件结构相关知识点 软考高级系统架构设计师:软件架构设计系列二二、摘要 随着中间件与Web技术的发展,三层或多层分布式应用体系越来越流行。在这种体系结构…

文生图模型之Stable Diffusion

原始文章地址 autoencoder CLIP text encoder tokenizer最大长度为77&#xff08;CLIP训练时所采用的设置&#xff09;&#xff0c;当输入text的tokens数量超过77后&#xff0c;将进行截断&#xff0c;如果不足则进行paddings&#xff0c;这样将保证无论输入任何长度的文本&…

开源的安全性:挑战与机会

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Python练习 函数取列表最小数

练习2&#xff1a;构造一个功能函数&#xff0c;可以解决如下问题&#xff1a; 要求如下&#xff1a; 1&#xff0c;任意输入一个列表&#xff0c;函数可以打印出列表中最小的那个数&#xff0c; 例&#xff1a;输入: 23,56,67,4,17,9 最小数是 &#xff1a;4 方法一: #内置函…

Locked勒索病毒:最新变种locked袭击了您的计算机?

导言&#xff1a; 在数字时代&#xff0c;一场隐秘的威胁正悄然而至&#xff0c;它的名字是.locked勒索病毒。这个黑暗的存在以其狡猾的攻击方式和致命的数据封锁能力&#xff0c;威胁着我们的数字生活。本文91数据恢复将带您深入了解.locked勒索病毒的本质&#xff0c;探索恢…

面试中问:React中函数组件和class组件的区别,hooks模拟生命周期

React中函数组件和class组件的区别&#xff0c;hooks模拟生命周期 React中函数组件和class组件的区别hooks模拟生命周期 React中函数组件和class组件的区别 函数组件: 定义&#xff1a;函数组件是使用纯函数定义的组件&#xff0c;它接受 props 作为参数并返回 JSX。简洁性&am…

软考高级系统架构设计师系列之:论文典型试题写作要点和写作素材总结系列文章五

软考高级系统架构设计师系列之:论文典型试题写作要点和写作素材总结系列文章五 一、论数据库的安全性设计1.论文题目2.写作要点和写作素材二、论数据挖掘技术的应用1.论文题目2.写作要点和写作素材三、论企业信息系统的安全1.论文题目2.写作要点和写作素材四、论软件可靠性评价…

opencv 案例实战01-停车场车牌识别实战

需求分析&#xff1a; 车牌识别技术主要应用领域有停车场收费管理&#xff0c;交通流量控制指标测量&#xff0c;车辆定位&#xff0c;汽车防盗&#xff0c;高速公路超速自动化监管、闯红灯电子警察、公路收费站等等功能。对于维护交通安全和城市治安&#xff0c;防止交通堵塞…

Python爬取网页详细教程:从入门到进阶

【导言】&#xff1a; Python作为一门强大的编程语言&#xff0c;常常被用于编写网络爬虫程序。本篇文章将为大家详细介绍Python爬取网页的整个流程&#xff0c;从安装Python和必要的库开始&#xff0c;到发送HTTP请求、解析HTML页面&#xff0c;再到提取和处理数据&#xff0…

解决方案:fatal error: openssl/bio.h: 没有那个文件或目录

出现报错如下&#xff1a; 出现该错误的原因有两个&#xff1a; 没有安装openssl或者libssl-dev库Libssl-dev版本过高&#xff0c;需要降级 一. 没有安装openssl或者libssl-dev库 使用指令安装openssl&#xff1a; 我的是已经安装完成了&#xff0c;所以再把libssl-dev的库也…

std::list和std::vector删除指定下标的元素

list和vector都可以使用erase函数移除指定下标的元素&#xff0c;注意输入的是迭代器&#xff0c;返回值为指向下一个元素的位置。: iterator erase(iterator position); iterator erase(iterator first,iterator last); 如果下标是index&#xff0c;直接调用即可&#xff1a…

package.json相关知识记录

一、相关字段 npm官方字段介绍 &#x1f367; bin   >   简单理解&#xff1a;指定命令的名称及路径   &#x1f349; 相当于想path中添加路径&#xff0c;局部安装是在./node_modules/.bin/&#xff0c;全局安装是在全局的bin目录   &#x1f349; bin指定的文件必须…

Arduino驱动ENS160空气质量传感器(气体传感器篇)

目录 1、传感器特性 2、硬件原理图 3、控制器和传感器连线图 4、驱动程序

【SkyWalking】分布式服务追踪与调用链系统

1、基本介绍 SkyWalking是一个开源的观测平台&#xff0c;官网&#xff1a;Apache SkyWalking&#xff1b; 可监控&#xff1a;分布式追踪调用链 、jvm内存变化、监控报警、查看服务器基本配置信息。 2、SkyWalking架构原理 在整个skywalking的系统中&#xff0c;有三个角色&am…

华纳云:ubuntu下nginx服务器如何配置

在Ubuntu操作系统上配置Nginx服务器涉及以下步骤。这里我将提供一个基本的配置示例&#xff0c;你可以根据自己的需求进行修改和定制。 安装 Nginx&#xff1a; 打开终端&#xff0c;并输入以下命令来安装 Nginx&#xff1a; sudo apt update sudo apt install nginx 启动 …

【安装GPU版本pytorch,torch.cuda.is_available()仍然返回False问题】

TOC 第一步 检查cuda是否安装&#xff0c;CUDA环境变量是否正确设置&#xff0c;比如linux需要设置在PATH&#xff0c;window下环境变量编辑看看&#xff0c;是否有CUDA 第二步&#xff0c;核查python中torch版本 首先查看你环境里的pytorch是否是cuda版本&#xff0c;我这…

js判断日期是否合法

function isDateValid(year, month, day) { // 创建一个Date对象&#xff0c;将年、月、日作为参数传入 // 注意&#xff1a;在JavaScript中&#xff0c;月份是从0开始的&#xff0c;所以实际月份要减1 var date new Date(year, month - 1, day); // 使用getFullYe…

【KingSCADA】问题处理:记录KS历史报警查询异常

哈喽&#xff0c;大家好&#xff01;我是雷工。 本篇记录KingSCADA的历史报警应用中的一个问题&#xff0c;及处理过程。 一、问题描述 最近客户遇到这么一个问题&#xff1a;当打开历史报警窗界面&#xff0c;自动加载的报警信息中有显示最近几天的报警信息&#xff0c;但当…