1.当析构函数为虚函数时,其所有派生类的析构函数都将自动成为虚函数(不管是否被标记为virtual)。2.当基类的析构函数为虚函数时,如果对子类调用析构函数时,程序会先调用派生类的析构函数,然后再去调用基类的析构函数。但如果基类的析构函数不是虚函数时,那么只会调用基类的析构函数。例:class Ba...
分类:
其他好文 时间:
2014-09-17 14:51:32
阅读次数:
133
var t: TBitBtn;begin t:=TBitBtn.Create(nil); t.Name:='BitBtn100'; t.parent :=Self; // 这里下断点end;一路跟踪就会发现以下函数执行的时候下降(执行子类覆盖函数):TBitBtn.CreateHandle;...
分类:
其他好文 时间:
2014-09-14 05:47:26
阅读次数:
167
为什么内联函数,构造函数,静态成员函数不能为virtual函数?1> 内联函数内联函数是在编译时期展开,而虚函数的特性是运行时才动态联编,所以两者矛盾,不能定义内联函数为虚函数。2> 构造函数构造函数用来创建一个新的对象,而虚函数的运行是建立在对象的基础上,在构造函数执行时,对象尚未形成,所以不能将...
分类:
其他好文 时间:
2014-09-13 15:45:25
阅读次数:
152
(ISO/IEC 14882:2011 section 12.7.4):Member functions, including virtual functions (10.3), can be called during construction or destruction (12.6.2).Wh...
分类:
编程语言 时间:
2014-09-13 00:40:34
阅读次数:
382
写下了自己对于在COM中使用delete this的思考,并且仔细思考了虚函数表。
分类:
编程语言 时间:
2014-09-12 23:24:54
阅读次数:
313
直到今日,才发现自己对重载的认识长时间以来都是错误的。幸亏现在得以纠正,真的是恐怖万分,雷人至极。一直以来,我认为重载可以发生在基类和派生类之间,例如: 1 class A { 2 public: 3 void test(int); 4 }; 5 class B : pub...
分类:
编程语言 时间:
2014-09-12 18:34:43
阅读次数:
272
1、纯虚函数class Base{public: Base(){}; virtual ~Base(){};};//类A是一个抽象类class A : public Base{public: A(){} virtual ~A(){} virtual void fun() ...
分类:
其他好文 时间:
2014-09-12 14:46:13
阅读次数:
204
继承虚函数调用 代码本文地址: http://blog.csdn.net/caroline_wendy派生类继承基类时, 使用virtual时, 会进行动态绑定, 没有virtual关键字则会覆盖.使用基类指针(Base*)指向派生类时, 调用函数, 则动态绑定的函数会调用派生类, 非动态绑定的函数调用基类.代码:/*
* main.cpp
*
* Created on: 2014.9.1...
分类:
编程语言 时间:
2014-09-12 12:01:53
阅读次数:
199
public继承从根本上讲,有两部分:接口继承和实现继承。两者之前的区别很像函数声明与函数定义。具体设计中,会呈现三种形式:derived class只继承成员函数的接口(纯虚函数);derived class同时继承函数的接口和实现,同时能够重写(override);derived class同时...
分类:
编程语言 时间:
2014-09-11 09:33:21
阅读次数:
205
链接上一篇日志,C++学习总结2,下面介绍下C++里面的其他内容 虚函数:一个接口,多种方法。 多态:编译时的多态与运行时的多态。 编译时的多态表现为运算符的重载与函数的重载。 运行时的多态表现为使用派生类与虚函数。 虚函数需要使用关键字virtual。 指向派生类型的指针。 基类型指针与派生类指针...
分类:
编程语言 时间:
2014-09-10 23:51:21
阅读次数:
283