C++面试题1:构造函数和虚构函数中能否调用虚函数?
构造函数跟虚构函数里面都可以调用虚函数,编译器不会报错。C++ primer中说到最好别用由于类的构造次序是由基类到派生类,所以在构造函数中调用虚函数,虚函数是不会呈现出多态的类的析构是从派生类到基类,当调用继承层次中某一层次的类的析构函数时意味着其派生类部分已经析构掉,所以也不会呈现多态因此如果在基类中声明的纯虚函数并且在基类的析构函数...
分类:
编程语言 时间:
2014-09-08 10:55:36
阅读次数:
453
c++面试题2:虚函数是如何实现的?
1、虚函数如何实现的?
虚函数是通过一张虚函数表实现的,有多少个虚函数,就有多少个指针;在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承、覆盖的问题;实际上在编译的时候,编译器会自动加上虚表虚函数的作用实现动态联编,也就是说在程序运行阶段动态的选择合适的成员函数,在定义了虚函数之后,可以在基类的派生类中对虚函数重新定义。虚表的使用方法是如...
分类:
编程语言 时间:
2014-09-08 10:55:26
阅读次数:
228
重载: a 相同的范围(在同一个类中) b 函数名字相同 c 参数不同(返回类型不足以区分重载函数) d virtual关键字可有可无重写:(实际上就是虚函数动态绑定) a 不同的范围,分别位于基类和派生类中 b 函数的名字相同 c 参数相同 e 一般情况下返回类型相同(除非返回类型分别为基类指针和...
分类:
其他好文 时间:
2014-09-05 19:41:01
阅读次数:
162
Qt Quick里的ListView,本身是Flickable的派生类,当你用鼠标拖曳或者手指触摸(触摸屏)时,会产生flickStarted和flickEnded两个信号,利用这两个信号,就可以实现下拉刷新数据,当然上拉刷新也是可以的。...
分类:
其他好文 时间:
2014-09-04 17:08:29
阅读次数:
797
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。以上是msdn官网对扩展方法的描述,现在我通过一个情景例子来对此进行阐释。假设一个控制台程序class Program{}里面的主...
分类:
其他好文 时间:
2014-09-04 00:09:07
阅读次数:
157
在研究Smack的源代码的时候,我对它的连接Connection以及派生类XMPPConnection的关注是最多的,因为一个即时通信程序,它的网络模块必是它的核心。而我很在乎它是如何实现的。
在收发数据包的时候,我看到了队列的身影。BlockingQueue和ArrayBlockingQueue。所以,我觉得用到什么然后去查阅,去记录,这种方法是比较高效率的。
BlockingQueue是在...
分类:
移动开发 时间:
2014-09-03 16:57:37
阅读次数:
237
用Qt中的QGLWidget窗体类中是不包括glut工具库的,难怪在myGLWidget(在我的程序中是QGLWidget的派生类)中绘制实心球体是说“glutSolidSphere”: 找不到标识符,就是说没有这个函数的声明。接下来就来安装glut库: 1.先下载glut库http://www.o...
提供一个创建一些列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂顾名思义就是对工厂的抽象,它提供了一组创建抽象产品对象的操作接口,我们实际使用的是抽象工厂的派生类,派生类中提供了操作的具体实现,创建一组具体的对象。以下情况可以使用抽象工厂模式:一个系统要独立于它的产品的创建、组合和表示时...
分类:
其他好文 时间:
2014-09-02 19:51:35
阅读次数:
300
抽象类: 如果一个类不与具体的事物相联系,而只是表达一种抽象的概念,仅仅是作为其派生类的一个基类,这样的类就是抽象类,在抽象类中声明方法时,如果加上abstract时就是抽象方法接口:表示一种能力。。接口中的方法,不需要访问修饰符,不需要实现接口就是为了多态存在C#中的类,单继承可以说,类继承了接口...
分类:
其他好文 时间:
2014-09-01 21:08:33
阅读次数:
173
一、缺省构造函数的调用关系通过下面的例子,我们来看一下基类与派生的构造函数的调用顺序。创建时先基类后派生类。销毁时先派生类后基类。#include #include using namespace std;class CBase { string name; int age;public...
分类:
其他好文 时间:
2014-08-31 00:27:40
阅读次数:
328