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是一个代理,你对代理进行操作,他 ...
随机推荐
- Java经典编程题50道之三十五
有一个数组,将其最大的元素与第一个元素交换,最小的元素与最后一个元素交换,然后输出数组. public class Example35 { public static void main(Str ...
- Java经典编程题50道之二十一
求1+2!+3!+...+20!的和. public class Example21 { public static void main(String[] args) { sum( ...
- Java GC分析记录
Java GC记录 近来.项目没有特别忙碌的时候,抽空看了下生产环境的项目运行状况,我们的项目一直运行速度不是很快,偶尔会出现卡顿的现象,这点给人的体验感觉也就不那么好了.先抛个测试环境截图(生产环境 ...
- 大数相加(类似杭电acm1002)
/*输入两个非常大的整数(完全超出了int.long的表示范围),这个整数的长度可能超过100位,计算并输出这两个数相加的结果.*/ //自己用题目所给的案例测试,输出是正确的,也能输出正确的结果,不 ...
- mysql忘记密码解决的办法
[很管用]忘记mysql root密码解决办法 1.编辑MySQL配置文件: 首先停止mysql服务, 然后开始编辑mysql配置文件:vi /etc/my.cnf在[mysqld]配置段添加如下一行 ...
- C语言老司机学Python (四)
字符串格式化: 可以使用类似c语言中sprintf函数的方法进行格式化,但是函数名称是print() 如:print('常量 PI 的值近似为:%5.3f.' % var_PI) 注意var_PI ...
- mysql打不开表问题解决方案
做开发时候某一表怎么也打不开,数据也不多,网上查了按下面这篇文章完美解决,但是要记得用root登录mysql: 记一次MySQL中Waiting for table metadata lock的解决方 ...
- mongodb3.0副本集搭建补充~~非admin数据库的用户权限
之前有搭建mongodb3.0的副本集,不过当时直接使用的admin数据库,用户也是直接给的root. 链接:http://blog.csdn.net/tuzongxun/article/detail ...
- CPLD/FPGA厂商概述 .
随着可编程逻辑器件应用的日益广泛,许多IC制造厂家涉足PLD/FPGA领域.目前世界上有十几家生产CPLD/FPGA的公司,最大的三家是:ALTERA,XILINX,Lattice,其中ALTERA和 ...
- Caused by: java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be ope
1.错误描述 java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.tes ...