1、隐藏:存在于派生类和基类中。只要成员名字相同就叫做隐藏。参数和函数名都相同时,是一种特殊的隐藏,叫做重写,重写只出现在函数中。若需要访问基类中被隐藏的成员,必须访问这种方法:“对象名:类名::隐藏成员名”。而“对象.成员名”访问的是派生类中的成员。之所以叫隐藏,是因为它的访问方式。
2、overload重载;override重写
3、虚函数:在声明函数时(定义函数时不用加)前面加上关键字virtual就为虚函数。
4、指针访问虚函数的特点:(1)、使用对象的指针去访问普通函数时,只看指针所属类,访问到的函数是指针所属类中的函数;(2)、使用指针对象的指针去访问虚函数时,只看指针指向对象的所属类,访问到的函数是指针指向的对象所属类的虚函数。(对象指针:访问普通函数时,只看指针类型;访问虚函数时,只看指针指向的类型)。引用和指针是一样的。这点主要用于实现回调函数。
5、回调函数:后写的代码执行会触发先写的代码调用后写的代码。后写的代码分两类:(1)、触发代码。(2)、回调函数。(典型的回调函数是创建线程)
6、能够体现多态:(1)、this指针 (2)、函数重载 (3)、指针访问虚函数虚函数等等。
7、动态关联、动态编联、动态多态性。都体现在指针访问虚函数这里。
8、虚析构函数:有虚函数就要用虚析构函数。当采用new方式创建基类对象,用基类类型变量去保存,当delete该变量时,会发现只调用了基类的析构函数,而并没有调用基类的析构函数,此时就出现了内存泄漏。这种情况,必须把基类的析构函数声明为虚析构函数。当基类的析构函数为虚析构函数时,派生类中的函数自动变为虚析构函数,不管是否用virtual关键字修饰。(建议:凡是可能称为基类的类的析构函数都声明为虚析构函数)
9、C++基础中重要知识:类对象、继承、虚函数、抽象类、组合。
10、纯虚函数:virtual 函数类型 函数名(参数表列) = 0;    这里的“=0”是格式,不是赋值,告诉编译系统这是一个纯虚函数。纯虚函数没有函数体。纯虚函数一旦定义了,就会变成虚函数。语法上没有错。
11、抽象类:    包含一个或者多个纯虚函数的类就是抽象类。(1)、抽象类不能用抽象类创建对象,但是可以被继承。(2)、抽象类可以创建指针或者引用来指向派生类对象。(3)、纯虚函数被派生类实现以后即为虚函数。(4)、抽象类的纯虚函数可以被继承,派生类中可以实现抽象类的纯虚函数。如果派生类没有把抽象类的纯虚函数实现完,则该派生类也为抽象类。(5)、在派生类中定义基类中继承下来的纯虚数前,在类中鼻血先声明为虚函数。
12、问:什么时候使用组合?什么时候使用继承?什么时候使用重写?什么时候使用虚函数?什么时候使用抽象类?
    答:(1)、部分与整体的关系,但是非本质上的,它仅仅是作为功能的扩充。
(2)、类型上的包含关系使用继承。为了解决代码的重用。
(3)、重写是对继承下来的函数体不满意。即函数体不能符合业务,则必须重写。一个基类可能有很多派生类,部分派生类对某个函数体不满意。实际开发中一定是重写虚函数,重写普通函数没有意义。
(4)、如果该函数要被基类重写,则需将该函数声明为虚函数;
(5)、所有派生类对基类的函数都不满意,但是又要使用相同的功能(即函数名和参数都相同),则需将该函数定义为纯虚函数,这样的此时的类就为抽象类。
13、protected修饰的构造函数,在派生类中,只能在参数列表中调用,不能在函数体内调用。而private修饰的构造函数,则在能被派生类中调用。
14、名称空间的使用可以使程序中定义相同名字的函数、变量、类等。

C++学习笔录3的更多相关文章

  1. ADO.NET Entity Framework学习笔录(一)

    今天开始学习了EF的相关内容,以前只知道ADO.NET,今天学习后觉得有必要写个相关的学习心得,今天就先写第一篇. 我们的再学习的过程中所用到的环境是Windows7+SQLServer2008+VS ...

  2. 性能测试LR学习笔录 -2

    LoadRunner基本测试流程: 制定性能测试计划(部分)  -> 创建测试脚本 -> 编译.运行测试脚本 -> 创建场景 - > 运行.监控场景.收集数据  -> 生 ...

  3. SVG学习笔录(一)

    SVG可缩放矢量图形(Scalable Vector Graphics)这项技术,现在越来越让大家熟知,在h5的移动端应用使用也越来越广泛了, 下面让我分享给大家svg学习的经验. HTML体系中,最 ...

  4. DDD学习笔录——提炼问题域之知识提炼与协作的基本原则

    1.通过通用语言达成共识 通用语言,已经强调过好多遍了,在DDD再怎么重视都不为过,后面可能还会讲. 知识提炼的输出以及共识的构建就是常见的通用语言(UL). 当与业务相关人员和主题专家进行建模时,每 ...

  5. DDD学习笔录——简介领域驱动设计的实践与原则

    DDD在存在许多DDD模式的同时,也有大量实践和指导原则,这些都是DDD思想体系成功的关键. 1.专注于核心领域 DDD强调的是在核心子域付出最多努力的需要.核心子域是你的产品会成功还是会失败的差异化 ...

  6. C++学习笔录4

    1.容器=数据结构+算法.相当于是为复杂的数据设计一种专门用于存放该数据的东西.用于开发中传递复杂的数据. 2.模版函数只能写在头文件中.不能单独做声明. 3.STL容器类分为三类: (1).顺序容器 ...

  7. C++学习笔录2

    1.如果一个类要成为基类,那么它的成员变量声明成受保护的变量,既用关键字protected修饰. 2.处理共同继承产生的二义性:采用虚继承方式,当出现两个相同的成员时,编译器会自动删除其中一个.其方法 ...

  8. C++学习笔录1

    1.在实际开发中,引用类型变量值用于函数的参数中.它不会另外开辟空间(提高了程序效率),他相当于变量的别名,代表的就是当前这个变量的地址空间.(引用的底层用的是指针.因此从底层的角度讲,其实它的效率是 ...

  9. cocos2d学习笔录1

    CCDirector的主要作用: 1.访问和改变场景: 2.访问cocos2d-x的配置细节 3.访问视图(OPENGL,UIVIEW,UIWINDOW): 4.暂停,恢复和结束游戏: 5.在UIKi ...

随机推荐

  1. 【转载】【转自AekdyCoin的组合数取模】

    本篇文章主要介绍了"[组合数求模] 转自AekdyCoin",主要涉及到[组合数求模] 转自AekdyCoin方面的内容,对于[组合数求模] 转自AekdyCoin感兴趣的同学可以 ...

  2. Unity3D Object.DontDestroyOnLoad 备忘

    初学Untiy3D,记录备忘. public static void DontDestroyOnLoad(Object target); Makes the object target not be ...

  3. QT-Creator C/C++ 打地鼠小游戏

    废话少说先上图: 这个游戏纯属土鳖思路,没有用到什么游戏引擎. 1.使用按钮或QLabel铺满窗口. 2.通过简单算法随机动态的设置按钮矩阵中某个按钮的背景图像. 3.同步2过程反复设置多个按钮背景实 ...

  4. ASP.NET DataList绑定数据并实现分页

    显示当前页码Label属性 值ID NowPageNumberLabtext    1 ×××××××××××××××××××××显示总页码Label属性 值ID BackPageNumberLabt ...

  5. python-base64编码与解码

    base64编码原理: 例如: 实例一: #-*- coding: UTF-8 -*- ' __date__ = '2015/12/23' import base64 code = "aGV ...

  6. ASP.NET页面继承关系

    用过ASP.NET(以下简称ASP)的都知道ASP以一种Code Behind的方式给咱展现了一种类似Winform的开发模型,同样也是以"事件触发"的方式进行各种请求处理.其中A ...

  7. 算法分析-快速排序QUICK-SORT

    设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序.值得注意的 ...

  8. jQuery学习-事件之绑定事件(五)

    大家应该还记得dispatch方法中有这么一段代码: event = jQuery.event.fix( event ); event的修复是在fix这个方法中的,而在fix中是通过 new jQue ...

  9. WPF Bug清单之(13)——应该出现却没有出现的ListView水平滚动条

    转载地址:http://www.cnblogs.com/nankezhishi/archive/2010/03/17/wpfbug13.html 我们知道ListView在内容超出控件本身范围时,默认 ...

  10. 客户端持久化解决方案: Web SQL

    客户端持久化解决方案: Web SQL Web SQL 提供了一组使用 SQL 操作客户端数据库的 APIs, 不是 HTML5 规范的一部分,是一个独立的规范. 核心方法 openDatabase: ...