C++(类和对象)2

36 友元

在这里插入图片描述
1)全局函数
全局函数做优元,就是把全局函数复制到类中,加个friend
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同上,将class GoodGay前写个friend,就可以访问了
当然,还有成员函数做友元

39 运算符重载-加号

普通加号只知道两个整型撒的相加
而自定义的类型的东西,要相加,比如两个人相加,就要用运算符重载
在这里插入图片描述
编译器做不到p1_mA+p2_mA赋给p3_mA,自定义需要
写函数这么写
在这里插入图片描述
operator来了
在这里插入图片描述
还可以全局函数
在这里插入图片描述

40 左移运算符重载

在这里插入图片描述
在这里插入图片描述
想要用coun<<p格式,那么只能用全局函数来写,上面成员函数只有创建对象了才能用operator,所以不能这个顺序

14 函数重载

在这里插入图片描述
出错
在这里插入图片描述.
无参是不行的!!
本质是编译器通过参数个数/类型搭配的
在这里插入图片描述
在这里插入图片描述
double型

在这里插入图片描述
参数顺序不同
即函数参数类型不同 或者 个数不同 或者 顺序不同
在这里插入图片描述
函数的返回值不可以作为函数重载的条件

15 函数重载-注意事项

在这里插入图片描述
在这里插入图片描述

碰到默认参数,,就会出现歧义。

45 继承

减少重复代码
class 子类:继承方式 父类
在这里插入图片描述

越下越细分
在这里插入图片描述

46 继承方式

在这里插入图片描述
public时,private不能继承,public、protected访问权限不变。

private时,全部private

47 继承模型

在这里插入图片描述
在这里插入图片描述
是16!!!
父类所有非静态成员都被子类继承;
父类私有成员属性倍编译器隐藏了,访问不到,但是确实倍继承了

在这里插入图片描述

48 构造和析构顺序

先有父类对象,还是先有子类对象?
在这里插入图片描述
父类对象是自己构造和析构,创建子类对象呢?
在这里插入图片描述
先有爸爸后有儿子
继承中 先调用父类构造函数,再调用子类构造函数,析构顺序与构造相反

49 继承同名成员的处理方式

在这里插入图片描述
1)同名成员属性

void test01()
{
	Son s;
	cout << "Son下的m_A = " << s.m_A << endl;
	cout << "Base下的m_A = " << s.Base::m_A << endl;//父类的作用域s.Base
	s.func();  //son的同名成员
	s.Base::func();
	s.Base::func(10);
//当子类与父类拥有同名的成员函数,子类会隐藏父类中所有版本的同名成员函数
//如果想访问父类中被隐藏的同名成员函数,需要加父类的作用域
}

51 多继承语法

在这里插入图片描述
在这里插入图片描述
自己两个,base1一个,base2一个,那么也就是16个字节(sizeof)

在这里插入图片描述
同名成员加作用域
在这里插入图片描述
52 菱形继承以及解决问题
在这里插入图片描述

在这里插入图片描述
虽然可以加作用域m_Age,但是还是继承了两份,但是羊驼到底是18,还是28,我们只需要一份就够了,资源浪费
在这里插入图片描述
解决问题:在继承前面加个vitural,虚继承
在这里插入图片描述
在这里插入图片描述

age只有一份了
sheep、tuo继承下来的虚指针了

53 多态
在这里插入图片描述
在这里插入图片描述

54 多态的原理

在这里插入图片描述
没加virutal是一个字节,加了是四个字节,不是int,是指针,不管什么指针都是4个字节(首先需要明白一个指针变量存放的是地址,而不是一个常量,因此不管什么类型的变量,都是地址的所占的大小。 )

在这里插入图片描述

在这里插入图片描述

vtptr指向的虚表存的地址为animal::speak的

55 计算器类

56 纯虚函数和抽象类

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
*父类指针Base base指向 子类对象

57 制作饮品

58 虚析构和纯虚析构

在这里插入图片描述

//virtual ~Animal()
//{
// cout << "Animal虚析构函数调用!" << endl;
//}
virtual ~Animal() = 0;
};
Animal::~Animal()
{
cout << "Animal 纯虚析构函数调用!" << endl;
} /
/和包含普通纯虚函数的类一样,包含了纯虚析构函数的类也是一个抽象类。不能够被实例化。
class Cat : public Animal {
public:
Cat(string name)
{
cout << "Cat构造函数调用!" << endl;
m_Name = new string(name);
} v
irtual void Speak()
{
cout << *m_Name << "小猫在说话!" << endl;
} ~
Cat()
{
cout << "Cat析构函数调用!" << endl;
if (this->m_Name != NULL) {
delete m_Name;
m_Name = NULL;
}
}
public:
string *m_Name;
};
void test01()
{
Animal *animal = new Cat("Tom");
animal->Speak();
//通过父类指针去释放,会导致子类对象可能清理不干净,造成内存泄漏
//怎么解决?给基类增加一个虚析构函数
//虚析构函数就是用来解决通过父类指针释放子类对象
delete animal;
}

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Rust 程序设计语言学习——结构体

结构体和元组类似&#xff0c;它们都包含多个相关的值。和元组一样&#xff0c;结构体的每一部分可以是不同类型。但不同于元组&#xff0c;结构体需要命名各部分数据以便能清楚的表明其值的意义。由于有了这些名字&#xff0c;结构体比元组更灵活&#xff1a;不需要依赖顺序来…

macOS访问samba文件夹的正确姿势,在哪里更改“macOS的连接身份“?还真不好找!

环境&#xff1a;路由器上需要身份认证的Mini NAS macOS Sonoma 14 这是一个非常简单的问题&#xff0c;但解决方法却藏得比较深&#xff0c;不够直观&#xff0c;GPT也没有给出明确的解决提示&#xff0c;特意记录一下。 macOS很多地方都很自动&#xff0c;有时候让人找不到设…

DevStack 部署 OpenStack 多节点

DevStack 部署 OpenStack 多节点 DevStack 支持OpenStack多节点部署&#xff0c;下面以一个控制节点和一个计算节点为例&#xff0c;介绍多节点多网卡部署流程。 官方文档&#xff1a; https://docs.openstack.org/devstack/latest/guides/multinode-lab.html https://docs…

202基于matlab的曲柄滑块机构的运动学仿真分析

基于matlab的曲柄滑块机构的运动学仿真分析&#xff0c;分析各个杆的速度、位移、加速度曲线&#xff0c;以及曲柄滑块机构的动画。程序已调通&#xff0c;可直接运行。 202 matlab 曲柄滑块机构 运动学仿真分析 - 小红书 (xiaohongshu.com)

枚举的详解

枚举的讲解 在C语言中&#xff0c;没有内置的枚举&#xff08;enum&#xff09;数据类型&#xff0c;但我们可以使用整数类型来模拟枚举的行为。C99标准之前&#xff0c;C语言使用#define指令来定义枚举&#xff0c;但这种方式并不安全&#xff0c;因为如果枚举值发生变化&…

某名麻将长连接数据解密

点击上方↑↑↑蓝字[协议分析与还原]关注我们 “ 分析金某麻将的长连接数据加密算法。” 近期&#xff0c;不小心碰到了一个棋牌游戏&#xff0c;叫xx麻将&#xff0c;使用长连接进行数据的传输&#xff0c;但三天两头换传输的内容格式&#xff0c;它的编码方式也很有意思&…

中间件设置静态资源目录

文章目录 为什么要设置静态资源目录设置静态资源代码示例 为什么要设置静态资源目录 服务器中的代码&#xff0c;对于外部来说都是不可见的&#xff0c; 所以我们写的html页面&#xff0c;浏览器无法直接访问 如果希望浏览器可以访问&#xff0c;则需要将页面所在的目录设置静…

洛谷day3

B2053 求一元二次方程 - 洛谷 掌握printf用法&#xff1b; #include <iostream> #include <cmath> using namespace std; double a,b,c; double delta; double x1,x2;int main() {cin>>a>>b>>c;delta b*b-4*a*c;if(delta>0){x1 (-bsqrt…

微服务(基础篇-003-Nacos集群搭建)

目录 Nacos集群搭建 1.集群结构图 2.搭建集群 2.1.初始化数据库 2.2.下载nacos 2.3.配置Nacos 2.4.启动 2.5.nginx反向代理 2.6.优化 视频地址&#xff1a; 06-Nacos配置管理-nacos集群搭建_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1LQ4y127n4?p29&…

包子凑数 蓝桥杯

关于这题的数学定理&#xff0c;如果 a,b 均是正整数且互质&#xff0c;那么由 axby&#xff0c;x≥0&#xff0c;y≥0 不能凑出的最大数是 &#xff1a;a*b-a-b 想不起来的时候&#xff0c;把能列出来的数据列出来找规律&#xff0c;不互质得数不符合题目所说 类似于力扣零钱…

Clion使用 - vcpkg

创建空白C项目 引入vcpkg插件 开启清单模式 引入某个库&#xff08;以cjson库为例&#xff09; 在代码中使用某个库&#xff08;以cjson库为例&#xff09;

数据结构和算法:树

二叉树 与链表类似&#xff0c;二叉树的基本单元是节点&#xff0c;每个节点包含值、左子节点引用和右子节点引用。 /* 二叉树节点结构体 */ struct TreeNode {int val; // 节点值TreeNode *left; // 左子节点指针TreeNode *right; // 右子节点指针TreeNode(int x) : val(x),…

uniapp页面嵌套其他页面的实现

功能: 类似于一个drawer&#xff0c;当主页面加载的时候会一并加载url对应的组件&#xff0c;当点击后以drawer形式显示组件里面的内容&#xff0c;可动画。 <navigator url"/pages/my/components/personalMessage" slot"right"><view><di…

阿里云4核8G云服务器优惠价格表,多配置报价

阿里云4核8G云服务器优惠价格955元一年&#xff0c;云服务器ECS通用算力型u1实例。2024年腾讯云服务器优惠价格表&#xff0c;一张表整理阿里云服务器最新报价&#xff0c;阿里云服务器网整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff…

【自然语言处理】统计中文分词技术(一):1、分词与频度统计

文章目录 一、词与分词1、词 vs 词素2、世界语言分类 二、分词的原因与基本原因1、为什么要分词2、分词规范3、分词的主要难点-切分歧义如何排除切分歧义利用词法信息利用句法信息利用语义信息利用语用、语境信息 4、分词的主要难点-未登录词未登录词如何识别未登录词 三、分词…

Spark spark-submit 提交应用程序

Spark spark-submit 提交应用程序 Spark支持三种集群管理方式 Standalone—Spark自带的一种集群管理方式&#xff0c;易于构建集群。Apache Mesos—通用的集群管理&#xff0c;可以在其上运行Hadoop MapReduce和一些服务应用。Hadoop YARN—Hadoop2中的资源管理器。 注意&…

力扣3. 无重复字符的最长子串

Problem: 3. 无重复字符的最长子串 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.川建一个set集合存储最长的无重复的字符&#xff1b; 2.创建双指针p、q&#xff0c;每次当q指针指向的字符不在set集合中时将其添加到set集合中让q指针后移&#xff0c;并且更新…

【Transformer】transformer注解

every blog every motto: You can do more than you think. 0. 前言 transformer注解 在过去的一年里&#xff0c;《Attention is all you need》中的transformer一直萦绕在很多人的脑海里。除了在翻译质量上产生重大改进之外&#xff0c;它还为许多其他NLP任务提供了一种新的…

cocos3.0 关于UI组件学习

Sprite 图片&#xff1a;官方文档 Size Mode: 1.Raw&#xff1a;原始大小 2.TRIMMED: 默认&#xff0c;会裁切原始图片透明像素 3.Custom&#xff1a;自定义&#xff0c;只要修改ContentSize&#xff0c;会自动设置 Type 1.Simple:普通,会铺满&#xff0c;一张图。 2.Sliced…

卷积神经网络-卷积层

卷积神经网络-卷积层 1多层感知机&#xff08;MLP&#xff09;2卷积神经网络&#xff08;CNN&#xff09;3MLP和CNN关系与区别4仍然有人使用MLP的原因&#xff1a;5MLP的局限性&#xff1a;MLP的应用领域&#xff1a;总结&#xff1a;6全连接到卷积全连接层 vs 卷积层结构差异应…