1. 类型转换:自动转换,显示转换,强转

总结:CPP编译的时候,从上往下,遇到不匹配,声明扩展了一个类的作用域(此时最多只能创建类的指针或者引用),         由于没有定义是不可能使用到类的成员

完成类型转换的时候,一般两个类的转换,两个接口都放在下面的那个类里面实现

  1. 手动类型转换:构造函数类型转换,赋值重载,operator XXXX()
    1. 构造函数类型转换:给一部分的数据,内部可以自己调节,那么这部分的数据就可以成为往该类转换(外->内)
    2. 赋值重载:跟构造函数一个原理,阶段是在赋值的时候,而不是初始化的时候(外->内)
    3. operator XXXX() 接口要求:不能有返回值,参数必须为空,函数名为要转换的类型名

函数内部要求必须有返回值(内->外)

首先就得创建这种类型的对象毕竟要返回这种类型的对象

只能是成员函数,拥有this,因为必须操作成员数据(重载类型)返回的时候一定是与类型名相同的那个类型

补充:流运算符的重载:friend ostream&  operator <<(ostream & os, const yourclass & yu10);

并不是成员,和类是完全隔离的,属于:友元重载

  1. 释放的时候是从下往上,构造函数不可以互相包含,造成死锁

头文件互相包含,互相引用对象,引用还有指针的时候可以编译但是不能执行

  1. 引用外部函数需要声明。。

类的声明只能定义类的指针或者引用,类的头文件之后(相当于定义了)(因为头文件整个的函数体系已经出来了,)

3.多继承功能迭代多,但是牵连很多,难维护

继承会把爹的所有元素都继承过来

继承的本质:子类直接把整个父类包含进去,多继承也不例外,重复的包都没有问题

真正的核心在于:运用了类似命名空间的走法来区分层次上的关系

比如想使用父类的成员,子类也有, B.A::n;使用命名空间的走法来区分层次上的结构

继承之后,按照源代码块整体的提取过来,数据是分离的,这就很明显了嘛

  1. 静态函数和成员函数本质的区别:不需要this指针,不依赖于一个对象
  2. 静态私有成员得有接口set,get

5.对protected的理解:只能说类的设计者(子类的设计)在继承的关系中是可以访问的,但是类的调用者是不可访问的(在Main这个层次进行操作)

6.本类的设计者(private),继承链中的设计者(protected),Main那边的调用者(public)

7.继承链:构造的时候:从基类开始构造,析构的时候:从派生类到基类

在继承链中,各自的成员数据由各自的构造函数进行初始化

(现在可以发现:在继承链中派生类的构造函数必须提供接口提供给基类去初始化各自类的数据成员)递归式的调用初始化

继承链中,派生类是整体的把基类完全的收入囊中,派生类实体和基类实体之间的操作互不相干,框架上是继承链模式

8.虚继承正对于多继承而言,派生类继承的多个基类中含有重复的基类,此时产生的浪费内存,产生二义性。。。。。。

虚继承之后相同的基类只开辟一个内存块,所有的像指针那样指向同一片内存

虚基类:就是容易出现重合的类

9.虚函数提供一个接口

多态主要依赖于继承和virtual,主要用于软件的扩展,(说到底软件的扩展就是依赖于接口的提供,然后把新的功能放进去)由于多态只能小接口的指针所以对于多功能就体现在virtual这个虚函数上面,利用虚函数实现多个不同的功能再用动态绑定就可以了

10异构结构:每个成员都是基类的指针,然后分别指向不同的在堆上开辟的派生类对象,实现了一个数据结构上的动态绑定---------多态

基类指针基于多态与虚函数调用派生类的方法

C++学习-10的更多相关文章

  1. JavaScript学习10 JS数据类型、强制类型转换和对象属性

    JavaScript学习10 JS数据类型.强制类型转换和对象属性 JavaScript数据类型 JavaScript中有五种原始数据类型:Undefined.Null.Boolean.Number以 ...

  2. ThinkPhp学习10

    原文:ThinkPhp学习10 查询操作 Action模块 User下的search public function search(){ //判断username是否已经传入,且不为空 if(isse ...

  3. python学习10—迭代器、三元表达式与生成器

    python学习10—迭代器.三元表达式与生成器 1. 迭代器协议 定义:对象必须提供一个next方法,执行该方法或者返回迭代中的下一项,或者返回一个StopIteration异常,以终止迭代(只能往 ...

  4. ElasticSearch 5学习(10)——结构化查询(包括新特性)

    之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...

  5. OC学习10——内存管理

    1.对于面向对象的语言,程序需要不断地创建对象.这些对象都是保存在堆内存中,而我们的指针变量中保存的是这些对象在堆内存中的地址,当该对象使用结束之后,指针变量指向其他对象或者指向nil时,这个对象将称 ...

  6. Win32汇编学习(10):对话框(1)

    现在我们开始学习一些有关GUI编程的有趣的部分:以对话框为主要界面的应用程序. 理论: 如果您仔细关注过前一个程序就会发现:您无法按TAB键从一个子窗口控件跳到另一个子窗口控件,要想转移的话只有 用鼠 ...

  7. 【Spark深入学习 -10】基于spark构建企业级流处理系统

    ----本节内容------- 1.流式处理系统背景 1.1 技术背景 1.2 Spark技术很火 2.流式处理技术介绍 2.1流式处理技术概念 2.2流式处理应用场景 2.3流式处理系统分类 3.流 ...

  8. 【转】Java学习---10个测试框架介绍

    [原文]https://www.toutiao.com/i6594302925458113027/ JAVA 程序员需要用到 10 个测试框架和库 Java 程序员需要用到十大单元测试和自动化集成测试 ...

  9. WPF学习10:基于MVVM Light 制作图形编辑工具(1)

    图形编辑器的功能如下图所示: 除了MVVM Light 框架是一个新东西之外,本文所涉及内容之前的WPF学习0-9基本都有相关介绍. 本节中,将搭建编辑器的界面,搭建MVVM Light 框架的使用环 ...

  10. spark学习(10)-RDD的介绍和常用算子

    RDD(弹性分布式数据集,里面并不存储真正要计算的数据,你对RDD的操作,他会在Driver端转换成Task,下发到Executor计算分散在多台集群上的数据) RDD是一个代理,你对代理进行操作,他 ...

随机推荐

  1. R语言-聚类与分类

    一.聚类: 一般步骤: 1.选择合适的变量 2.缩放数据 3.寻找异常点 4.计算距离 5.选择聚类算法 6.采用一种或多种聚类方法 7.确定类的数目 8.获得最终聚类的解决方案 9.结果可视化 10 ...

  2. java线程优先级

    java的线程优先级分为1-10 这10个等级 1为最强,最优先 10为最弱 如果大于10或者小于1则会抛异常 源代码为: public final void setPriority(int newP ...

  3. Nginx下编译PHP+Mysql

    先说一下PHP在Apache和Nginx下所扮演的角色 apache一般是把php当做自己的一个模块来启动的. 而nginx则是把http请求变量(如get,user_agent等)转发给 php进程 ...

  4. python爬虫之基本知识

    随着数据的海量增长,我们需要在互联网上选取所需要的数据进行自己研究的分析和实验.这就用到了爬虫这一技术,下面就跟着小编一起初遇python爬虫! 一.请求-响应 在利用python语言实现爬虫时,主要 ...

  5. git 命令和使用场景总结

    资料地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000    http://w ...

  6. 【视频教程】一步步将AppBox升级到Pro版

    本系列教程分为上中下三部分,通过视频的形式讲解如何将基于FineUI(开源版)的AppBox v6.0一步一步升级FineUIPro(基础版). [视频教程]一步步将AppBox升级到Pro版(上)主 ...

  7. caffe之路-SIGTERM信号捕捉

    Caffe在1.0版本仅支持两种信号的处理: 1) SIGHUP 2) SIGINT SIGHUP:caffe接收到此信号后进行snapshot,并不会中断caffe的训练. SIGINT:caffe ...

  8. Luogu P1092 虫食算

    题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 +8468#6633 44445509678 其中# ...

  9. 定义一个Matrix类,实现矩阵的加法和乘法

    #include<iostream> using namespace std; class Matrix { int row;//矩阵的行 int col;//矩阵的列 int **a;/ ...

  10. Flex中的FusionCharts 2D柱形图

    1.2D柱形图源码 <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:f ...