面向对象程序设计-C++ Inheritance & Multiple inheritance & RTTI【第十三次上课笔记】
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【第十三次上课笔记】的更多相关文章
- {key}面向对象程序设计-C++ polymorphism 【第十三次上课笔记】
Peronal Link: http://segmentfault.com/a/1190000002464822 这节课讲了本门课程 面向对象程序设计中最为重要的一个部分 - 多态 /******** ...
- 面向对象程序设计-C++ Type conversion (Static) & Inheritance & Composition【第十二次上课笔记】
这节课继续讲解了 static 作为静态数据成员 / 成员函数的用法 具体详解我都已注释出来了,大家可以慢慢看 有任何问题都可以在这篇文章下留言我会及时解答 :) //static 静态数据成员 // ...
- 2018面向对象程序设计(Java)第13周学习指导及要求
2018面向对象程序设计(Java)第13周学习指导及要求 (2018.11.22-2018.11.25) 学习目标 (1) 掌握事件处理的基本原理,理解其用途: (2) 掌握AWT事件模型的工作机 ...
- 面向对象程序设计(JAVA) 第13周学习指导及要求
2019面向对象程序设计(Java)第13周学习指导及要求 (2019.11.19-2019.11.25) 学习目标 (1) 掌握事件处理的基本原理,理解其用途: (2) 掌握AWT事件模型的工作 ...
- Python面向对象三要素-继承(Inheritance)
Python面向对象三要素-继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承概述 1>.基本概念 前面我们学习了Python的面向对象三 ...
- Multiple inheritance in Go
原文:http://golangtutorials.blogspot.com/2011/06/multiple-inheritance-in-go.html --------------------- ...
- 面向对象第二个特征-继承(Inheritance)
面向对象第二个特征-继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.java中的继承概述 1>.继承概述 多个类种存在相同属性和行为时,讲这 ...
- Multiple Inheritance in C++
Multiple Inheritance is a feature of C++ where a class can inherit from more than one classes. The c ...
- [.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图
[.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图 1.用例图简介 定义:用例图主要用来描述“用户.需求.系统功能单元”之间的关系. ...
随机推荐
- win7 64位的PHP5.4安装redis扩展
先看phpinfo.php信息 可以看是 PHP5.4 VC9 TS Architecture x86 说明是x86的PHP,虽然系统是64位的,所以还是要下载x86的redis 然后Github下载 ...
- POJ 1151Atlantis 扫描线+线段树求矩形面积并
题目链接 #include <iostream> #include <vector> #include <cstdio> #include <cstring& ...
- Python开发环境Spyder安装方法
Spyder(Scientific PYthon Development EnviRonment)是一个强大的交互式 Python 语言开发环境,提供高级的代码编辑.交互测试.调试等特性,支持包括 W ...
- [LeetCode]题解(python):131-Palindrome Partitioning
题目来源: https://leetcode.com/problems/palindrome-partitioning/ 题意分析: 给定一个字符串s,将s拆成若干个子字符串,使得所有的子字符串都是回 ...
- cocos2dx定时器
cocos2dx三种定时器的使用以及停止schedule,scheduleUpdate,scheduleOnce 首先,什么是定时器呢?或许你有时候会想让某个函数不断的去执行,或许只是执行一次,获取你 ...
- 将dll放进exe[.Net]
原文:将dll放进exe[.Net] 两种方案: 1.使用ILMerge工具. 缺点:需离开工程,使用第三方工具(ILMerge). 2.将dll作为Resource放进exe,exe执行时动态加载( ...
- Windows Azure 社区新闻综述(#74 版)
欢迎查看最新版本的每周综述,其中包含有关云计算和 Windows Azure 的社区推动新闻.内容和对话.以下是本周的亮点. 文章.视频和博客文章 · Azure CDN:吸取的宝贵经验(10 月 ...
- Windows平台下C++插件系统实现的几个关键技术问题及其解决思路
根据我的实践,在Windows平台下设计并实现一个C++插件系统,需要解决几个关键技术问题.下面我谈谈需要解决的几个关键技术问题以及我想到的简单的解决思路.由于我主要专注于Windows平台C++程序 ...
- codeforces#FF DIV2C题DZY Loves Sequences(DP)
题目地址:http://codeforces.com/contest/447/problem/C C. DZY Loves Sequences time limit per test 1 second ...
- JavaScript算法描述(一)
function swap(arr,index1,index2){ var temp=arr[index1]; arr[index1]=arr[index2]; arr[index2]=temp; } ...