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. paip.vs2010 或.net 4.0安装出错解决大法.

    paip.vs2010 或.net 4.0安装出错解决大法. 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.cs ...

  2. HDoj-2072-字数

    字数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  3. PipedInputStream/PipedOutputStream原理

    PipedInputStream类与PipedOutputStream类用于在应用程序中创建管道通信.一个PipedInputStream实例对象必须和一个PipedOutputStream实例对象进 ...

  4. Mysql安装时出现APPLY security settings错误

    在安装mysql数据库时,如果重新安装,很容易遇见apply security setting error(access denied for user 'root@localhost'(using  ...

  5. 深入理解 Javascript 面向对象编程(转)

    一:理解构造函数原型(prototype)机制 prototype是javascript实现与管理继承的一种机制,也是面向对象的设计思想.构造函数的原型存储着引用对象的一个指针,该指针指向与一个原型对 ...

  6. jQuery Tags Input Plugin 插件的使用

    一个jquery开发的标签功能加强插件,可以生成或删除标签,还能对输入重复标签进行检查,和JQuery autocomplete插件配合实现自动完成功能. 官网:http://xoxco.com/pr ...

  7. VS单元测试入门实践教程

    摘要:本教程不会介绍单元测试的基本理论知识,也不会和大家讨论在实际项目中是否需要写单元测试代码的问题.但是如果你此时想使用VS中的单元测试的工具来测试某个方法是否正确,可你又从来没真正实践过,那么本教 ...

  8. Hibernate中load与get的区别

    1.get()采用立即加载方式,而load()采用延迟加载; ①get()方法执行的时候,会立即向数据库发出查询语句;(查询顺序:内部缓存,数据库) ②load()方法返回的是一个代理(此代理中只有一 ...

  9. C语言预处理指令

    C程序的源代码中可包括各种编译指令,这些指令称为预处理命令.虽然它们实际上不是C语言的一部分,但却扩展了C程序设计的环境.本节将介绍如何应用预处理程序和注释简化程序开发过程,并提高程序的可读性.ANS ...

  10. Hibernate工作原理及为什么要用?(转http://www.cnblogs.com/javaNewegg/archive/2011/08/28/2156521.html)

    原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.xml中的<mapping resou ...