C++学习-10
- 类型转换:自动转换,显示转换,强转
总结:CPP编译的时候,从上往下,遇到不匹配,声明扩展了一个类的作用域(此时最多只能创建类的指针或者引用), 由于没有定义是不可能使用到类的成员
完成类型转换的时候,一般两个类的转换,两个接口都放在下面的那个类里面实现
- 手动类型转换:构造函数类型转换,赋值重载,operator XXXX()
- 构造函数类型转换:给一部分的数据,内部可以自己调节,那么这部分的数据就可以成为往该类转换(外->内)
- 赋值重载:跟构造函数一个原理,阶段是在赋值的时候,而不是初始化的时候(外->内)
- operator XXXX() 接口要求:不能有返回值,参数必须为空,函数名为要转换的类型名
函数内部要求必须有返回值(内->外)
首先就得创建这种类型的对象毕竟要返回这种类型的对象
只能是成员函数,拥有this,因为必须操作成员数据(重载类型)返回的时候一定是与类型名相同的那个类型
补充:流运算符的重载:friend ostream& operator <<(ostream & os, const yourclass & yu10);
并不是成员,和类是完全隔离的,属于:友元重载
- 释放的时候是从下往上,构造函数不可以互相包含,造成死锁
头文件互相包含,互相引用对象,引用还有指针的时候可以编译但是不能执行
- 引用外部函数需要声明。。
类的声明只能定义类的指针或者引用,类的头文件之后(相当于定义了)(因为头文件整个的函数体系已经出来了,)
3.多继承功能迭代多,但是牵连很多,难维护
继承会把爹的所有元素都继承过来
继承的本质:子类直接把整个父类包含进去,多继承也不例外,重复的包都没有问题
真正的核心在于:运用了类似命名空间的走法来区分层次上的关系
比如想使用父类的成员,子类也有, B.A::n;使用命名空间的走法来区分层次上的结构
继承之后,按照源代码块整体的提取过来,数据是分离的,这就很明显了嘛
- 静态函数和成员函数本质的区别:不需要this指针,不依赖于一个对象
- 静态私有成员得有接口set,get
5.对protected的理解:只能说类的设计者(子类的设计)在继承的关系中是可以访问的,但是类的调用者是不可访问的(在Main这个层次进行操作)
6.本类的设计者(private),继承链中的设计者(protected),Main那边的调用者(public)
7.继承链:构造的时候:从基类开始构造,析构的时候:从派生类到基类
在继承链中,各自的成员数据由各自的构造函数进行初始化
(现在可以发现:在继承链中派生类的构造函数必须提供接口提供给基类去初始化各自类的数据成员)递归式的调用初始化
继承链中,派生类是整体的把基类完全的收入囊中,派生类实体和基类实体之间的操作互不相干,框架上是继承链模式
8.虚继承正对于多继承而言,派生类继承的多个基类中含有重复的基类,此时产生的浪费内存,产生二义性。。。。。。
虚继承之后相同的基类只开辟一个内存块,所有的像指针那样指向同一片内存
虚基类:就是容易出现重合的类
9.虚函数提供一个接口
多态主要依赖于继承和virtual,主要用于软件的扩展,(说到底软件的扩展就是依赖于接口的提供,然后把新的功能放进去)由于多态只能小接口的指针所以对于多功能就体现在virtual这个虚函数上面,利用虚函数实现多个不同的功能再用动态绑定就可以了
10异构结构:每个成员都是基类的指针,然后分别指向不同的在堆上开辟的派生类对象,实现了一个数据结构上的动态绑定---------多态
基类指针基于多态与虚函数调用派生类的方法
C++学习-10的更多相关文章
- JavaScript学习10 JS数据类型、强制类型转换和对象属性
JavaScript学习10 JS数据类型.强制类型转换和对象属性 JavaScript数据类型 JavaScript中有五种原始数据类型:Undefined.Null.Boolean.Number以 ...
- ThinkPhp学习10
原文:ThinkPhp学习10 查询操作 Action模块 User下的search public function search(){ //判断username是否已经传入,且不为空 if(isse ...
- python学习10—迭代器、三元表达式与生成器
python学习10—迭代器.三元表达式与生成器 1. 迭代器协议 定义:对象必须提供一个next方法,执行该方法或者返回迭代中的下一项,或者返回一个StopIteration异常,以终止迭代(只能往 ...
- ElasticSearch 5学习(10)——结构化查询(包括新特性)
之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...
- OC学习10——内存管理
1.对于面向对象的语言,程序需要不断地创建对象.这些对象都是保存在堆内存中,而我们的指针变量中保存的是这些对象在堆内存中的地址,当该对象使用结束之后,指针变量指向其他对象或者指向nil时,这个对象将称 ...
- Win32汇编学习(10):对话框(1)
现在我们开始学习一些有关GUI编程的有趣的部分:以对话框为主要界面的应用程序. 理论: 如果您仔细关注过前一个程序就会发现:您无法按TAB键从一个子窗口控件跳到另一个子窗口控件,要想转移的话只有 用鼠 ...
- 【Spark深入学习 -10】基于spark构建企业级流处理系统
----本节内容------- 1.流式处理系统背景 1.1 技术背景 1.2 Spark技术很火 2.流式处理技术介绍 2.1流式处理技术概念 2.2流式处理应用场景 2.3流式处理系统分类 3.流 ...
- 【转】Java学习---10个测试框架介绍
[原文]https://www.toutiao.com/i6594302925458113027/ JAVA 程序员需要用到 10 个测试框架和库 Java 程序员需要用到十大单元测试和自动化集成测试 ...
- WPF学习10:基于MVVM Light 制作图形编辑工具(1)
图形编辑器的功能如下图所示: 除了MVVM Light 框架是一个新东西之外,本文所涉及内容之前的WPF学习0-9基本都有相关介绍. 本节中,将搭建编辑器的界面,搭建MVVM Light 框架的使用环 ...
- spark学习(10)-RDD的介绍和常用算子
RDD(弹性分布式数据集,里面并不存储真正要计算的数据,你对RDD的操作,他会在Driver端转换成Task,下发到Executor计算分散在多台集群上的数据) RDD是一个代理,你对代理进行操作,他 ...
随机推荐
- Android查缺补漏(IPC篇)-- 进程间通讯基础知识热身
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8479282.html 在Android中进程间通信是比较难的一部分,同时又非常 ...
- Python自动化--语言基础7--操作日志、加密、发送邮件、线程、生产者消费者
1.操作日志 logging.basicConfig:日志的统一处理器,对日志的输出格式和方式做配置日志级别等级CRITICAL > ERROR > WARNING > INFO & ...
- Winform美化MessageBox
现在在做的项目美工要求比较高,所以根据网上搜索的资料,自定义了一整套的弹出框,供大家参考,之网上其他大神有调用系统ICO的,容易导致异常,我在此使用本地资源ICO,效率高不异常.using Syste ...
- tf.variable和tf.get_Variable以及tf.name_scope和tf.variable_scope的区别
在训练深度网络时,为了减少需要训练参数的个数(比如具有simase结构的LSTM模型).或是多机多卡并行化训练大数据大模型(比如数据并行化)等情况时,往往需要共享变量.另外一方面是当一个深度学习模型变 ...
- opencv 离线文档下载地址在哪里?
OpenCV 官方离线文档下载地址:http://docs.opencv.org/ 如何生成离线文档? http://docs.opencv.org/master/d4/db1/tutorial_do ...
- UVA1600 状态BFS
刚开是我用了一种很笨的bfs过掉的,后来看到原来还可以三维带状态BFS,觉得是一个不错的思路. d[x][y][k]表示坐标位于(x,y)经过K个障碍到达时的最短路径,当然如果(x,y)处的数字是0就 ...
- 位置信息类API调用的代码示例合集:中国省市区查询、经纬度地址转换、POI检索等
以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 中国省市区查询:2017最新中国省市区地址 经纬度地址转换:经纬度 ...
- 基础--Redis在Linux环境下的安装
1. 安装redis服务 1.1 检查安装依赖程序 yum install gcc-c++yum install -y tclyum install wget 1.1.1 下载redis安装包 (或者 ...
- 特殊权限SUIG、SGID、SBIT
一.SetUID与SGID 只能用于二进制程序 执行者需要有该二进制程序的x权限 执行具有SUID权限的二进制程序,那么执行者将具有该二进制程序所有者的权限. 举例来说,/etc/passwd文件的权 ...
- OJ的初步了解
注意源文件的注释可能跟题目不一样. 注意工程文件已有主函数. 注意输出结果还是返回值. 注意带参数的方法不用手动输入. 注意提交的次数的正确率会计入编程能力.