Sadly, 这节课带过去的笔记本没电了 T^T

导致没有一行 Code, Sorry

笔记如下:

 Shape * p1;    //使用指针创建对象的方法
p = new Circle (2.0);
Shape * p2;
p = new Rectangle (3.0, 5.0); class Shape {
public:
virtual double area () = ; //Pure virtual function
} //Warning: 纯虚函数不能以内敛的形式进行定义,只能在类的外部定义 //如果,抽象基类中没有定义的虚函数,那么,在其派生类中定义也无法实现 //C++ 对象布局
//概念: 成员函数占的空间不在对象中,而在代码段中 EmptyClass es;
cout << sizeof (es); //输出为1,非空,即只存在es对象的地址 //1. C++ 给每个含有虚函数的类分配 virtual function table (Vtable)
//2. 给其每一个对象创建一个虚指针 //Override 覆盖: 基类中有虚函数,派生类中重新实现; 返回值类型也要一样
//Overload 重载
//Namebinding 隐藏: 派生类中定义了函数会把基类中所有同名函数隐藏
//恢复隐藏的方法 int x = d4.Base::f (); //实现间接访问被隐藏的虚函数,所谓的隐藏只是直接访问隐藏 //在构造函数,析构函数用虚函数,只会调用本类的实现
//在非静态成员函数中使用虚函数时,则会调用覆盖了的虚函数版本
//因为静态成员函数中无 this 指针 //RTTI : 运行时类型鉴别, 根据虚函数原理
Runtime Type indentification #include <typeinfo> //需要导入的头文件 typeid () //获取当前对象实际类型
typeid (br).name () //多重继承 class Dog : public Pet, public animal { }; //dynamic_case : 向下的类型转化 Dog * pd = dynamic_case <Dog *> (p); //1. 如果 p 的类型是 Dog * 类型,则 pd = p
//2. 否则,pd = NULL 为空 //只用于指针或引用,定义指针类中有虚函数,一定是多态类

面向对象程序设计-C++ Inheritance & Multiple inheritance & RTTI【第十三次上课笔记】的更多相关文章

  1. {key}面向对象程序设计-C++ polymorphism 【第十三次上课笔记】

    Peronal Link: http://segmentfault.com/a/1190000002464822 这节课讲了本门课程 面向对象程序设计中最为重要的一个部分 - 多态 /******** ...

  2. 面向对象程序设计-C++ Type conversion (Static) & Inheritance & Composition【第十二次上课笔记】

    这节课继续讲解了 static 作为静态数据成员 / 成员函数的用法 具体详解我都已注释出来了,大家可以慢慢看 有任何问题都可以在这篇文章下留言我会及时解答 :) //static 静态数据成员 // ...

  3. 2018面向对象程序设计(Java)第13周学习指导及要求

    2018面向对象程序设计(Java)第13周学习指导及要求 (2018.11.22-2018.11.25)  学习目标 (1) 掌握事件处理的基本原理,理解其用途: (2) 掌握AWT事件模型的工作机 ...

  4. 面向对象程序设计(JAVA) 第13周学习指导及要求

    2019面向对象程序设计(Java)第13周学习指导及要求 (2019.11.19-2019.11.25)   学习目标 (1) 掌握事件处理的基本原理,理解其用途: (2) 掌握AWT事件模型的工作 ...

  5. Python面向对象三要素-继承(Inheritance)

    Python面向对象三要素-继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承概述 1>.基本概念 前面我们学习了Python的面向对象三 ...

  6. Multiple inheritance in Go

    原文:http://golangtutorials.blogspot.com/2011/06/multiple-inheritance-in-go.html --------------------- ...

  7. 面向对象第二个特征-继承(Inheritance)

    面向对象第二个特征-继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.java中的继承概述 1>.继承概述 多个类种存在相同属性和行为时,讲这 ...

  8. Multiple Inheritance in C++

    Multiple Inheritance is a feature of C++ where a class can inherit from more than one classes. The c ...

  9. [.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图

    [.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图  1.用例图简介 定义:用例图主要用来描述“用户.需求.系统功能单元”之间的关系. ...

随机推荐

  1. yield return in C#

    Yield has two great uses It helps to provide custom iteration with out creating temp collections. It ...

  2. linux历史发展

    1.什么是开源? 开源就是软件和源代码都是公开的. 可以修改(完善作者的代码)和创建自己的软件. 2.免费软件不同于自由软件,虽然它是免费的,但他不公布源代码,共享软件与免费软件有点类似,其初起是不收 ...

  3. 数据结构之后缀数组suffix array

    在字符串处理当中,后缀树和后缀数组都是非常有力的工具,其中后缀树大家了解得比较多,关于后缀数组则很少见于国内的资料.其实后缀是后缀树的一个非常精巧的替代品,它比后缀树容易编程实现,能够实现后缀树的很多 ...

  4. mfc删除标题和边框

    //删除标题和边框WS_CAPTION和WS_BORDER风格 ModifyStyle(WS_CAPTION, 0);ModifyStyle(WS_BORDER, 0);

  5. Linux 下的多线程编程

    随着你对编程的深入,多线程是一个免不了的话题,在这里就对多线程做一个比较详细的总结. 首先摆在我们面前的就是什么是线程,以及为么会有这个东西.记得之前学习的时候自己会画一张很大的图,在图中可以详细的写 ...

  6. iOS --- [持续更新中] iOS移动开发中的优质资源

    在我们做iOS APP的开发过程中, 须要非常多设计, 产品, 技术, 运营等方面的技巧和资源. 现将其整理汇总, 本文会一直持续更新. 敬请关注. 设计 Dribbble Dribbble是一个面向 ...

  7. Intellij IDEA创建Maven Web项目

    1前言 在创建项目中,IDEA提供了非常多项目模板,比方Spring MVC模板,能够直接创建一个基于Maven的Spring MVC的demo,各种配置都已经设定好了,直接编译部署就能够使用. 最開 ...

  8. uva Stacks of Flapjacks

                                                     Stacks of Flapjacks  题目链接:Click Here~ 题目描写叙述:     ...

  9. Sql server 事务 存储过程

    事务( Transaction )是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位. 通过事务,SQL Server能将逻辑相关的一组操作绑定在一起, ...

  10. VC++6.0打开文件出错的解决办法

    1.下载http://support.microsoft.com/kb/241396里面的一个叫FileTool.exe的文件并解压,解压后是一个vc工程,用vc6.0打开工程,编译,得到FileTo ...