C++ Day5
目录
一、静态成员
1.1 概念
1.2 格式
1.3 银行账户实例
二、类的继承
2.1 目的
2.2 概念
2.3 格式
2.4 继承方式
2.5 继承中的特殊成员函数
2.5.1 构造函数
2.5.2析构函数
2.5.3 拷贝构造函数
2.5.4拷贝赋值函数
总结:
三、多继承
3.1 概念
3.2 格式
3.3总结
一、静态成员
1.1 概念
静态数据成员和静态成员函数是属于类的,不属于类的实例,它们在所有类的实例中是共享。
在数据成员前加static ----->静态数据成员
在成员函数前加static ------>静态成员函数
静态变量的初始化必须在类外初始化,如果没有初始化(不建议),默认为0
静态成员函数只能访问静态数据成员。
1.2 格式
class 类名
{static 数据类型 变量名; //静态数据成员static 函数返回值类型 函数名(形参列表) //静态成员函数{} };
数据类型 类名::变量 = 初始化;
1.3 银行账户实例
#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;
}
二、类的继承
类的三大属性:封装、继承、多态
2.1 目的
1> 实现代码的重用性
2> 建立父类和子类之间的联系
3> 在实现多态的时候,通过继承,实现子类对父类函数的重写
2.2 概念
保持已有类的特性,在原来基础上,增加新的特性,构造出新类的过程, 成为 继承 / 派生
被继承者 称为 父类 / 基类
继承者 称为 子类 / 派生类
2.3 格式
class 类名:继承方式 类名
{子类的拓展;
};//继承方式: public 共有继承 protected保护继承 private私有继承
//一般用public方式继承
#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;}
};//封装 学生 类 共有继承人 类
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;}};int main()
{Stu s("zhangsan",12,1001,78);return 0;
}
2.4 继承方式
父类中成员权限 public | protected | private public | protected | private public | protected | private
继承方式 public protected private
继承到子类中该成员的权限 public | protected | 不可访问 protected | protected | 不可访问 private | private | 不可访问
类外是否可以访问子类 可以 | 不可以 | 不可以 不可以 | 不可以 | 不可以 不可以 | 不可以 | 不可以
从父类中继承下来的成员
2.5 继承中的特殊成员函数
2.5.1 构造函数
父类的初始化必须赶在子类之前,换句话说,先调用父类的构造函数,再调用子类的构造函数
2.5.2析构函数
析构函数调用的顺序:先调用子类的析构函数,再调用父类的析构函数。
先构造的 后析构。 后构造的 先析构
2.5.3 拷贝构造函数
父类的拷贝构造函数会继承到子类中,在子类的拷贝构造函数中使用父类的拷贝构造函数,来完成子类从父类继承下来的成员的拷贝工作。
如果涉及深拷贝,则需要在子类和父类各自完成深拷贝工作。
2.5.4拷贝赋值函数
父类的拷贝赋值函数会继承到子类中,在子类的拷贝赋值函数中使用父类的拷贝赋值函数,来完成子类从父类继承下来的成员的赋值工作。
如果涉及深拷贝,则需要在子类和父类各自完成深拷贝工作
#include <iostream>using namespace std;//封装 人 类 父类/基类
class Person
{
private:string name;
protected:int age;
public:int h;
public://无参构造函数Person(){cout << "父类的无参构造函数" << endl;}//有参构造Person(string name, int age, int h):name(name),age(age),h(h){cout << "父类的有参构造函数" << endl;}//拷贝构造函数Person(const Person & other):name(other.name),age(other.age),h(other.h){cout << "父类的拷贝构造函数" << endl;}//拷贝赋值函数Person & operator=(const Person &p){name = p.name;age = p.age;h = p.h;cout << "父类的拷贝赋值函数" << endl;return *this;}void show(){cout << "父类的show" << endl;}
};//封装 学生 类 共有继承人 类
class Stu:public Person //子类 、派生类
{
private:int id;int math;public://无参构造函数Stu(){cout << "子类的无参构造函数" << endl;}//有参构造函数Stu(string name, int age, int h, int id, int math):Person(name,age,h),id(id),math(math){cout << "子类的有参构造函数" << endl;}//拷贝构造函数Stu(const Stu & s):id(s.id),math(s.math),Person(s){cout << "子类的拷贝构造函数" << endl;}//拷贝赋值函数Stu & operator=(const Stu & s){Person::operator=(s);id = s.id;math = s.math;cout << "子类的拷贝赋值函数" << endl;return *this;}void show(){cout << "子类的show" << endl;cout << h << endl; //通过共有继承,类外、子类可以访问父类共有成员cout << age << endl; //通过共有继承,子类可以访问父类保护成员,类外不可以访问//cout << name << endl;//通过共有继承,子类不可访问父类私有成员,类外不可以访问}};int main()
{Stu s("zhangsan",12,190,1001,78);Stu s2=s;Stu s3;s3 = s2;// s.show();
// s.Person::show();return 0;
}
总结:
1> 父类的初始化必须赶在子类之前,换句话说,先调用父类的构造函数,再调用子类的构造函数
2> 当父类的函数和子类的函数是同名同类型时,不会报错,原因是作用域不同,如果子类实例化出一个对象,这个对象调用该函数,调用的是子类的函数,如果想调用父类中函数。则需要加上类名和作用域限定符。
三、多继承
3.1 概念
一个类由多个类公共派生。
3.2 格式
class 类名:继承方式1 类名1,继承方式2 类名2,.....,继承方式n 类名n
{子类的拓展
};
#include <iostream>using namespace std;//封装 沙发的类
class Sofa
{
private:string sitting;
public://无参构造Sofa() {cout << "沙发的无参构造" << endl;}//有参构造函数Sofa(string s):sitting(s){cout << "沙发的有参构造" << endl;}void display(){cout << sitting << endl;}
};//封装 床 类
class Bed
{
private:string sleep;public://无参Bed() {cout << "床的无参构造" << endl;}//有参Bed(string s):sleep(s){cout << "床的有参构造" << endl;}void display(){cout << sleep << endl;}
};//封装 沙发床类 继承于沙发 和 床
class Sofa_Bed:public Bed,public Sofa
{
private:int w;
public://Sofa_Bed(){cout << "沙发床的无参构造" << endl;}//有参构造Sofa_Bed(string sit, string s, int w):Bed(s),Sofa(sit),w(w){cout << "沙发床的有参构造" << endl;}};int main()
{Sofa_Bed s;Sofa_Bed s1("可坐","可躺",123);s1.Sofa::display();s1.Bed::display();return 0;
}
3.3总结
1> 子类由多个父类共同派生,子类调用调用构造函数顺序,肯是最后调用自己,对于多个父类的构造函数顺序的调用,和初始化列表的书写顺序无关,和继承的时候顺序有关。
2> 当多个父类中有同名同类型的函数,子类对象调用该函数时,需要表明哪个类的,加上类名和作用域限定符。
相关文章:
C++ Day5
目录 一、静态成员 1.1 概念 1.2 格式 1.3 银行账户实例 二、类的继承 2.1 目的 2.2 概念 2.3 格式 2.4 继承方式 2.5 继承中的特殊成员函数 2.5.1 构造函数 2.5.2析构函数 2.5.3 拷贝构造函数 2.5.4拷贝赋值函数 总结: 三、多继承 3.1 概念 3.2 格…...
el-element:自定义参数
希望在下拉框、输入框、多选框中添加自定义参数,这在项目中是非常常见的 1、 Select选择器中remote-method方法带自定义参数 :remote-method"(query)>{remoteMethod(query,自定义参数)}" remoteMethod(query, pid){ } 2、 el多选框方法追加参数&…...
“分布式”与“集群”初学者的技术总结
一、“分布式”与“集群”的解释: 分布式:把一个囊肿的系统分成无数个单独可运行的功能模块 集群: 把相同的项目复制进行多次部署(可以是一台服务器多次部署,例如使用8080部署一个,8081部署一个,…...
C++day5(静态成员、类的继承、多继承)
一、Xmind整理: 二、上课笔记整理: 1.静态数据成员静态成员函数(银行账户实例) #include <iostream>using namespace std;class BankAccount { private:double balance; //余额static double interest_rate; //利率 p…...
2023MySQL+MyBatis知识点整理
文章目录 主键 外键 的区别?什么是范式?什么是反范式?什么是事务?MySQL事务隔离级别?MySQL事务默认提交模式?MySQL中int(1)和int(10)的区别MySQL 浮点数会丢失精度吗?MySQL支持哪几种时间类型&a…...
【随笔】如何使用阿里云的OSS保存基础的服务器环境
使用阿里云OSS创建一个存储仓库:bucket 在Linux上下载并安装阿里云的ossutil工具 // 命令行,是linux环境 3. 安装ossutil。sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash 说明:安装过程中,需要使用解压工具…...
汽车电子笔记之:AUTOSA架构下的多核OS操作系统
目录 1、AUTOSAR多核操作系统 1.1、OS Application 1.2、多核OS的软件分区 1.3、任务调度 1.4、核间任务同步 1.5、计数器、报警器、调度表 1.6、自旋锁与共享资源 1.7、核间通信IOC 1.8、OS Object中元素交互 1.9、多核OS的启动与关闭 2、多核OS注意事项 2.1、最小…...
解决华为云ping不通的问题
进入华为云控制台。依次选择:云服务器->点击服务器id->安全组->更改安全组->添加入方向规则,添加一个安全组规则(ICMP),详见下图 再次ping公网ip就可以ping通了 产生这一问题的原因是ping的协议基于ICMP协…...
数据结构入门 — 链表详解_双向链表
前言 数据结构入门 — 双向链表详解* 博客主页链接:https://blog.csdn.net/m0_74014525 关注博主,后期持续更新系列文章 文章末尾有源码 *****感谢观看,希望对你有所帮助***** 系列文章 第一篇:数据结构入门 — 链表详解_单链表…...
时序预测 | MATLAB实现PSO-KELM粒子群算法优化核极限学习机时间序列预测(含KELM、ELM等对比)
时序预测 | MATLAB实现PSO-KELM粒子群算法优化核极限学习机时间序列预测(含KELM、ELM等对比) 目录 时序预测 | MATLAB实现PSO-KELM粒子群算法优化核极限学习机时间序列预测(含KELM、ELM等对比)预测效果基本介绍模型介绍程序设计参…...
SSL/TLS协议的概念、工作原理、作用以及注意事项
个人主页:insist--个人主页 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、SSL/TLS协议的基本概念 二、SSL/TLS的工作…...
[Stable Diffusion教程] 第一课 原理解析+配置需求+应用安装+基本步骤
第一课 原理解析配置需求应用安装基本步骤 本次内容记录来源于B站的一个视频 以下是自己安装过程中整理的问题及解决方法: 问题:stable-diffusion-webui启动No Python at ‘C:\xxx\xxx\python.exe‘ 解答:打开webui.bat 把 if not de…...
uniapp结合Canvas+renderjs根据经纬度绘制轨迹(二)
uniapp结合Canvasrenderjs根据经纬度绘制轨迹 文章目录 uniapp结合Canvasrenderjs根据经纬度绘制轨迹效果图templaterenderjsjs数据结构 根据官方建议要想在 app-vue 流畅使用 Canvas 动画,需要使用 renderjs 技术,把操作canvas的js逻辑放到视图层运…...
VR全景加盟会遇到哪些问题?全景平台会提供什么?
想创业,你是否也遇到这些问题呢?我是外行怎么办?没有团队怎么办?项目回本周期快吗?项目靠谱吗?加盟平台可信吗?等等这类疑问。近几年,VR产业发展迅速,尤其是VR全景项目在…...
如何进行微服务的集成测试
集成测试的概念 说到集成测试,相信每个测试工程师并不陌生,它不是一个崭新的概念,通过维基百科定义可以知道它在传统软件测试中的含义。 Integration testing (sometimes called integration and testing, abbreviated I&T) is the pha…...
spark grpc 在master运行报错 exitcode13 User did not initialize spark context
程序使用sparksql 以及protobuf grpc ,执行报错 ApplicationMaster: Final app status: FAILED, exitCode: 13, (reason: Uncaught exception: java.lang.IllegalStateException: User did not initialize spark context! 先说原因 : 1.使用了不具备权限…...
nginx 反向代理的原理
Nginx(发音为"engine X")是一个高性能、轻量级的开源Web服务器和反向代理服务器。它的反向代理功能允许将客户端的请求转发到后端服务器,然后将后端服务器的响应返回给客户端。下面是Nginx反向代理的工作原理: 1.客户端…...
【SpringBoot】第二篇:RocketMq使用
背景: 本文会介绍多种案例,教大家如何使用rocketmq。 一般rocketmq使用在微服务项目中,属于分模块使用。这里使用springboot单体项目来模拟使用。 本文以windows系统来做案例。 下载rocketmq和启动: RocketMQ 在 windows 上运行…...
飞天使-vim简单使用技巧
此文是记录技巧使用,如果想节约时间,可以直接看最后一个章节 vim 的介绍 vim号称编辑器之神,唯快不破,可扩展,各种插件满天飞。 vi 1991 vim 1.14 vim四种模式 普通模式: 移动光标, 删除文本,…...
分布式搜索引擎----elasticsearch
目录 1、初识elasticsearch 1.1、什么是elasticsearch 1.2.ELK技术栈 2、正向索引和倒排索引 2.1、正向索引 2.2、倒排索引 2.3、正向索引和倒排索引的区别 3、elasticsearch中的概念理解 3.1、文档和字段 3.2、索引和映射 3.3、mysql与elasticsearch 1、初识elasti…...
AnnotationConfigApplicationContext类和ClasspathXmlApplicationContext类的区别?
在 Spring Framework 中,AnnotationConfigApplicationContext 和 ClasspathXmlApplicationContext 是两个不同的应用程序上下文实现,用于配置和管理 Spring Bean 容器。它们之间的主要区别在于配置的方式和使用场景。 1. **AnnotationConfigApplication…...
使用VSCode SSH实现公网远程连接本地服务器开发的详细教程
文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 前言 远程…...
Codeforces Round 894 (Div. 3)
还是打一下卡!!! (A,B,C) 目录 A. Gift Carpet 链接 : 题面 : 题目意思 : 思路 : 代码 : B. Sequence Game 链接 : 题面 : 编辑 题目意思 : 思路 : 代码 : C. Flower City Fence 原题链接 : 题面 : 题目意思 : 思路 : 代码 : A. Gift Carpet 链…...
ACL2023 Prompt 相关文章速通 Part 1
Accepted Papers link: ACL2023 main conference accepted papers 文章目录 Accepted PapersPrompter: Zero-shot Adaptive Prefixes for Dialogue State Tracking Domain AdaptationQuery Refinement Prompts for Closed-Book Long-Form QAPrompting Language Models for Lin…...
“R语言+遥感“水环境综合评价方法
详情点击链接:"R语言遥感"水环境综合评价方法 一:R语言 1.1 R语言特点(R语言) 1.2 安装R(R语言) 1.3 安装RStudio(R语言) (1)下载地址 &…...
数据结构之哈希
哈希 1. 哈希概念2. 哈希冲突3. 哈希冲突解决3.1 哈希表的闭散列3.2 哈希表的开散列 2. 哈希的应用2.1 位图2.2 布隆过滤器 哈希(Hash)是一种将任意长度的二进制明文映射为较短的二进制串的算法。它是一种重要的存储方式,也是一种常见的检索方…...
可视化绘图技巧100篇基础篇(七)-散点图(一)
目录 前言 适用场景 图例 普通散点图与可视化 曲线图 气泡图...
关于什么是框架
框架(Framework)是一个框子——指其约束性,也是一个架子——指其支撑性。 IT语境中的框架,特指为解决一个开放性问题而设计的具有一定 性的支撑结构。在此结构上约束可以根据具体问题扩展、安插更多的组成部分,从而更迅…...
iOS开发Swift-集合类型
集合基本类型:数组 Array (有序), 集合 Set (无序不重复), 字典 Dictionary (无序键值对) 1.数组 Arrays (1)数组的表示 Array<Element> [Element](2)创建空数组 var someInts: [Int] [] someInts.count //数组长度(3)带值数组 var…...
【keepalived双机热备与 lvs(DR)】
目录 一、概述 1.简介 2.原理 3.作用 二、安装 1.配置文件 2.配置项 三、功能模块 1.core 2.vrrp 3.check 四、配置双机热备 1.master 2.backup 五、验证 1.ping验证 2.服务验证 六、双机热备的脑裂现象 七、keepalivedlvs(DR) 1.作…...
该企业为暂停开票企业解决方案/seo关键词快速排名软件
1、将本文编码成numpy数据,将文本分解而成的单元(单词、字符或 n-gram)叫作标记(token)。对标记做 one-hot 编码(one-hot encoding)与标记嵌入[token embedding,通常只用…...
wordpress跳转https/百度账户代运营
国服新出的小活动,被玩家戏称为:在DNF之中玩DNF。不过国服出品,必然是BUG四起的精品,近日有玩家爆料,模拟器刷出的史诗和神话装备,通过特殊手段,是可以放入到背包的,这就让41、21和缺…...
如何做网站优化的内容/seo免费培训视频
一、rand()函数名: rand 功 能: 随机数发生器 用 法: int rand(void); 所在头文件: stdlib.h函数说明 :rand()的内部实现是用线性同余法做的,它不是真的随机数,因其周期特别长,故在一定的范围里可看成是随机的。rand()返回一…...
南宁一站网 给网站做营销/杭州seo网络推广
前言QNAP NAS兼容于数据管理软件Commvault,为企业级跨平台备份应用打造高效益的数据备份解决方案,您可以将Commvault数据管理软件安装于QNAP虚拟机工作站上的Windows虚拟机,并享受以下好处:利用QTS操作系统快速部署与集中存储&…...
海口会计报名网站/深圳百度关键字优化
先观看以下两种手机键盘这是两款键盘布局不一样的手机(A版本,B版本),你作为公司的产品经理,想在正式发布产品之前知道,哪个键盘布局对用户体验更好呢?首先,我们需要设置目标,用来衡量各个版本的…...
ur电商seo平台价值/怎么做网络推广优化
16 个写代码的好习惯 参考文章: https://mp.weixin.qq.com/s/M6Dj4AcZkCf0f2K7Tle7_Q...