一、C++为什么引入虚函数,虚函数有哪些用途? 1.非虚的世界 对象的自恰性:对同样的函数调用,每个对象都会做出恰当的响应. b. 通过指向子类对象的基类指针调用函数: 只能调用基类的成员函数,虽然指针指向子类对象. 一旦调用子类所特有的成员函数,将引发编译错误. c.通过指向基类对象的子真调用函数...
分类:
其他好文 时间:
2014-07-21 09:38:40
阅读次数:
213
当存在继承关系时,派生类的作用域嵌套在其基类的作用域之内。一个对象、引用或指针的静态类型决定了该对象的哪些成员是可见的。即使静态类型与动态类型可能不一致,但我们使用哪些成员仍然是由静态类型决定的。基类指针(引用)即使指向派生类对象,仍然不能通过该指针(引用)来访问派生类中定义的成员,即使是publi...
分类:
编程语言 时间:
2014-07-19 16:01:04
阅读次数:
279
特殊工具与技术
--运行时类型识别
引:
通过下面两个操作符提供RTTI:
1.typeid操作符,返回指针或引用所指对象的实际类型。
2.dynamic_cast操作符,将基类类型的指针或引用安全地转换为派生类型的指针或引用。
对于带虚函数的类,在运行时执行RTTI操作符,但对于其他类型,在编译时计算RTTI操作符。
当具有基类的引用或指针,但需要执行不是基类组成部分的派生类操作的时候,需要动态的强制类型转换。通常,从基类指针获得派生类行为最好的方法是通过虚...
分类:
编程语言 时间:
2014-07-19 11:45:04
阅读次数:
258
为了访问公有派生类的特定成员,可以通过讲基类指针显示转换为派生类指针。也可以将基类的非静态成员函数定义为虚函数(在函数前加上virtual) 1 #include 2 using namespace std; 3 4 class base{ 5 public: 6 /*virtual*/ ...
分类:
其他好文 时间:
2014-07-17 18:04:41
阅读次数:
300
大家都知道C++虚函数的机制,对于基类定义为虚函数的地方,子类假设覆写,在基类指针或者引用来指向子类的时候会实现动态绑定。 但假设指针去调用非虚函数,这个时候会调用C++的静态绑定,去推断当前的指针是什么类型,就去运行哪个类型的函数。 非常有一种比較经典的使用方法,就是Template Method...
分类:
编程语言 时间:
2014-07-14 08:53:47
阅读次数:
246
1.赋值兼容规则
(1)派生类对象可以给基类对象赋值,这种情况下派生类对象将从基类继承的成员的值赋值给一个基类对象;但是不允许将一个基类的对象赋值给一个派生类。
(2)可以将派生类对象的地址赋给基类指针,使基类指针指向派生类对象,通过基类指针引用成员时只可以引用派生类从基类继承而来的成员,而不允许引用派生类的新成员。
(3)引用与指针相同。
2.多继承
(1)一个派生类从两个以上的基类中...
分类:
编程语言 时间:
2014-07-06 11:51:03
阅读次数:
207
转自:http://blog.csdn.net/itolfn/article/details/7412364一:继承中的指针问题。1. 指向基类的指针可以指向派生类对象,当基类指针指向派生类对象时,这种指针只能访问派生对象从基类继承而来的那些成员,不能访问子类特有的元素 ,除非应用强类型转换,例如有...
分类:
编程语言 时间:
2014-07-02 19:05:47
阅读次数:
292
static_cast: 这种强制转换只会在编译时检查。如果编译器检测到您尝试强制转换完全不兼容的类型,则static_cast会返回错误。您还可以使用它在基类指针和派生类指针之间强制转换,但是,编译器在无法分辨此类转换在运行时是否是安全的。dynamic_cast:dynamic_cast在运行....
分类:
编程语言 时间:
2014-06-30 14:27:44
阅读次数:
164
大家都知道C++虚函数的机制,对于基类定义为虚函数的地方,子类如果覆写,在基类指针或者引用来指向子类的时候会实现动态绑定。 但如果指针去调用非虚函数,这个时候会调用C++的静态绑定,去判断当前的指针是什么类型,就去执行哪个类型的函数。 很有一种比较经典的用法,就是Template Method模式....
分类:
编程语言 时间:
2014-06-17 20:17:49
阅读次数:
185
大家都知道C++虚函数的机制,对于基类定义为虚函数的地方,子类如果覆写,在基类指针或者引用来指向子类的时候会实现动态绑定。
但如果指针去调用非虚函数,这个时候会调用C++的静态绑定,去判断当前的指针是什么类型,就去执行哪个类型的函数。
很有一种比较经典的用法,就是Template Method模式,基类定义一个非虚的算法框架,里面具体定义一些纯虚的函数片段,由子类来进行实现,从...
分类:
编程语言 时间:
2014-06-17 18:48:34
阅读次数:
325