码迷,mamicode.com
首页 >  
搜索关键字:virtual函数    ( 149个结果
简单工厂模式
【1】什么是简单工厂模式?核心思想:用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。理解:根据条件生成不同的实例。利用多态的特性,调用同名方法,不同的实例将得到不同的结果。【2】代码示例如下:代码如下: 1 #include 2 #include ...
分类:其他好文   时间:2014-08-26 22:37:36    阅读次数:307
Effective C++ 条款九、十 绝不在构造和析构过程中调用virtual函数|令operator=返回一个reference to *this
1、当在一个子类当中调用构造函数,其父类构造函数肯定先被调用。如果此时父类构造函数中有一个virtual函数,子类当中也有,肯定执行父类当中的virtual函数,而此时子类当中的成员变量并未被初始化,所以无法调用子类与之对应的函数。即为指向虚函数表的指针vptr没被初始化又怎么去调用派生类的virt...
分类:编程语言   时间:2014-08-16 10:59:50    阅读次数:248
C++面试题(附答案) (转载)
1.是不是一个父类写了一个virtual函数,如果子类覆盖它的函数不加virtual,也能实现多态?virtual修饰符会被隐形继承的。private也被集成,只事派生类没有访问权限而已。virtual可加可不加。子类的空间里有父类的所有变量(static除外)。同一个函数只存在一个实体(inlin...
分类:编程语言   时间:2014-08-12 18:27:24    阅读次数:319
聚合类和字面值常量类
聚合类聚合类使得用户可以直接访问其成员,并且具有特殊的初始化语法形式。当一个类满足如下条件时,我们说它是聚合的:所有成员都是public的没有定义任何构造函数没有类内初始化没有基类,也没用virtual函数。下面的类都是一个聚合类struct Data{ int ival; string s;}.....
分类:其他好文   时间:2014-08-09 21:04:49    阅读次数:237
Effective C++:条款37:绝不又一次定义继承而来的缺省參数值
因为又一次定义继承而来的non-virtual函数是不对的(见上一个条款),所以这个条款就将问题局限于:绝不又一次定义继承一个带有缺省參数值的virtual函数。(一)virtual函数是动态绑定的,而缺省參数却是静态绑定。对象的所谓静态类型,是它在程序中被声明时所採用的类型。你可能会在“调用一个定...
分类:编程语言   时间:2014-07-21 14:24:06    阅读次数:218
Effective C++ Item 39 明智而审慎地使用 private 继承
经验:private 继承意味 is-implemented-in-terms of。它通常比 composition 的级别低。 但是当 derived class 需要访问 protected base class 的成员,或需要重新定义继承而来的 virtual 函数时,这么设计是合理的 经验:和 composition 不同, private 继承可以造成 empty base 最优化。这对致力于“对象尺寸最小化”的程序库开发者而言,可能很重要 示例1:虽是 Empty class,但却不仅要花...
分类:编程语言   时间:2014-07-15 22:41:05    阅读次数:284
Effective C++ Item 35 考虑 virtual 函数以外的实现
1.virtual 函数版本 class GameCharacter{ public: virtual int healthValue() const; //返回人物的健康指数, derived classes 可重新定义它 }; 2.使用 non-virtual interface 手法,那是 Template Method 设计模式的一种特殊形式。 让客户通过 public non-virtual 成员函数间接调用 private virtual 函数 class GameCharacter{ pu...
分类:编程语言   时间:2014-07-15 22:36:18    阅读次数:364
Effective C++ Item 41 了解隐式接口和编译期多态
经验:class 和 templates 都支持接口和多态。 对 classes 而言接口是显式的,以函数签名为中心。多态则是通过 virtual 函数发生于运行期 对 templates 参数而言,接口是隐式的,奠基于有效表达式。多态则是通过 templates 具体化和函数重载解析(function overloading resolution)发生于编译期。 示例1:显式接口和运行期多态 class Widget{ public: Widget(); virtual ~Widget(); vir...
分类:编程语言   时间:2014-07-14 12:54:57    阅读次数:195
Effective C++ Item 37 绝不重新定义继承而来的缺省参数值
经验:绝对不要重新而来的缺省参数值,因为缺省参数值都是静态绑定,而 virtual 函数 -- 你唯一应该覆写的东西 -- 却是动态绑定 示例: class Shape{ public: enum ShapeColor {Red, Green, Blue}; virtual void draw(ShapeColor color = Red) const = 0; }; class Rectangle: public Shape{ public: virtual void draw(ShapeColor...
分类:编程语言   时间:2014-07-12 21:22:15    阅读次数:278
Effective C++ Item 36 绝不重新定义继承而来的 non-virtual 函数
经验:绝对不要重新定义继承而来的 non-virtual 函数 --> Item 7 "为多态基类声明 virtual 析构函数" 是本条款的特例 示例: class B{ public: void mf(); //... }; class D: public B{ public: void mf(); // 遮掩了B::mf,Item 33 名称遮掩规则 } D x; B *pB = &x; D *pD = &x; pB->mf(); // 调用 B::mf pD->mf(); // 调用 ...
分类:编程语言   时间:2014-07-12 19:09:10    阅读次数:234
149条   上一页 1 ... 11 12 13 14 15 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!