static_cast
const_cast
reinterpret_cast
运行时类型识别(RTTI)
dynamic_cast
哪种情况下dynamic_cast和static_cast使用的情况一样?
什么情况下使用dynamic_cast代替虚函数?
typeid
分类:
编程语言 时间:
2014-11-19 17:43:44
阅读次数:
268
一、情景
C++中父类的虚函数必须要实现吗?
class Vir{
public:
virtual void tryVirtual();
};
class CVir:public Vir{
public:
void tryVirtual(){
std::cout<<"CVir"<<std::endl;
}
};
二、说明
(1)在main函数中,如果有父类或者子类的实例对象...
分类:
编程语言 时间:
2014-11-19 15:59:29
阅读次数:
315
1、流 尽量提高可读性,避免撰写精简代码 在c++中,有四种方法获得多态行为:虚函数、模板、重载和转换2、predicates:状态带来的问题3、可扩充的模板:使用继承还是traits?4、typename5、容器、指针和“不是容器的容器”6、使用vector和deque7、使用set和map .....
分类:
编程语言 时间:
2014-11-18 23:18:43
阅读次数:
204
虚函数的定义要遵循以下重要规则:
1.如果虚函数在基类与派生类中出现,仅仅是名字相同,而形式参数不同,或者是返回类型不同,那么即使加上了virtual关键字,也是不会进行晚绑定的。
2.只有类的成员函数才能说明为虚函数,因为虚函数仅适合用与有继承关系的类对象,所以普通函数不...
分类:
编程语言 时间:
2014-11-18 22:57:56
阅读次数:
206
C++的虚函数是一种多态技术,试图用不变的代码实现可变的代码。 多态技术分为两类: 1.静态多态:函数重载和运算符重载 2.动态多态:虚函数 ----------------------------------------------------------- ##虚函...
分类:
其他好文 时间:
2014-11-18 12:02:41
阅读次数:
148
转自:http://www.cnblogs.com/smhy8187/articles/1686815.html使用虚函数就是在父类中把子类中共有的但却易于变化或者不清楚的特征抽取出来,作为子类需要去重新实现的操作(override),我们可以称之做“热点”。而虚拟函数也是OOP中实现多态的关键之一...
之所以要用类函数代替API,是因为VCL对它做了一些包装,好在API起作用之前和之后做一些额外的事情:通知和判断等等。之所以类函数要包装一个CM_消息,是因为这样方便程序员截断和改写这个处理过程举例:procedure TWinControl.Invalidate;begin // 注意,是简单执....
在虚表中,派生类虚函数指针会替代基类的对应的虚函数指针的位置//析构函数:派生类析构函数首先调用派生类析构,然后调用父类析构函数;与构造函数顺序相反多态还有个关键之处就是一切用指向基类的指针或引用来操作对象,所以要实现子类接口的重写,必须使用抽象类。1)虚函数按照其声明顺序放于表中。2)父类的虚函数...
分类:
其他好文 时间:
2014-11-16 21:25:41
阅读次数:
188
0 overload:重载指的是同一个类中有两个或多个名字相同但是参数不同的方法,(注:返回值不能区别函数是否重载),重载没有关键字。override:过载也称重写是指子类对父类中虚函数或抽象函数的“覆盖”(这也就是有些书将过载翻译为覆盖的原因),但是这种“覆盖”和用new关键字来覆盖是有区别的。n...
分类:
其他好文 时间:
2014-11-15 00:04:44
阅读次数:
310
一个包含一个或多个纯虚函数的类叫做抽象类。使用关键字abstract声明。抽象类不能初始化,只提供部分实现。可以被继承,继承抽象类的类必须实现抽象类中的虚方法。抽象类只能通过接口或是作为其他类的基类使用。抽象类能够被用于类,属性,方法,索引和事件。使用abstract声明表示要作为其他类的基类使用,...