抽象基类可以有构造函数,在子类需要调用抽象类中的函数或方法时,需要调用构造函数,同样析构函数也可以存在,类的初始化顺序:父类的静态成员,静态初始化块,子类静态成员,静态初始化块,父类成员变量,父类构造函数,子类成员变量,子类构造函数。只不过很多抽象基类没有过多的成..
分类:
其他好文 时间:
2014-12-24 12:04:05
阅读次数:
204
对于一个单一的类来说,析构函数是不是虚函数,其没有实质性的意义。但是当当前类作为基类的时候,基类的析构函数是不是虚函数则会对程序带来不同程度的影响。
看下下面的代码运行结果:
#include
using namespace std;
class Base
{
public:
Base()
{
cout << "Base:Constructor" <<endl;
}
~Base()...
分类:
编程语言 时间:
2014-12-21 22:10:13
阅读次数:
311
主要讲了,1. virtual析构函数的作用与调用顺序2. 使用时机,并不是使用了继承就要把基类的析构函数变为虚函数(virtual),只有当用于多态目的时才进行一个virtual析构函数的定义。3. 不要继承那些没有将析构函数定义为virtual的类来实现多态行为对于1:有些类继承可能只是一个组合...
分类:
编程语言 时间:
2014-12-21 17:57:41
阅读次数:
156
问题:
类需要一个无参的构造函数么?
类需要一个析构函数么?
类的构造函数需要初始化所有的对象成员么?
类需要一个虚析构函数么?
有些类需要虚析构函数只是为了声明他们的析构函数是虚的。绝不会用作基类的类是不需要虚析构函数的:任何虚函数只在继承的情况下才有用。假设B为父类,D为子类,B何时需要一个虚析构函数?只有有人肯呢过会对实际指...
分类:
编程语言 时间:
2014-12-19 20:45:34
阅读次数:
196
接下来的是more effective c++ 11至20条款:11.禁止异常信息(exceptions)传递到析构函数外。析构函数的调用情况可能有两种:(1)对象正常销毁 (2)异常传播过程中的栈展开机制-销毁。如果在析构函数内抛出异常,它不会被析构函数捕获,它会传播到析构函数的调用端,如果调用端...
分类:
编程语言 时间:
2014-12-18 21:59:30
阅读次数:
219
在类的实例超出范围时我们希望确保它所占的存储能被收回C#中提供了析构函数用于专门释放被占用的系统资源析构函数的名字与类名相同只是在前面加了一个符号~ 析构函数不接受任何参数也不返回任何值如果你试图声明其它任何一个以符号~ 开头而不与类名相同的方法和试图让析构函数返回一个值一样编译器都会产生一个错误析...
分类:
其他好文 时间:
2014-12-15 11:44:37
阅读次数:
137
高效C++ --经验条款(三)
给多态基类声明virtual析构函数:
“给base classes一个virtual析构函数”,这个规则只适用于带有多态性质的base classes身上。这种base classes的设计目的是为了用来“通过base class接口处理derived class对象”。
并非所有base classes的设计目的都是为了多态用途。例如标准stirng和ST...
分类:
编程语言 时间:
2014-12-14 22:47:10
阅读次数:
218
转自:http://blog.csdn.net/starlee/article/details/619827 我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:class ClxBase{public: ...
分类:
编程语言 时间:
2014-12-14 22:27:56
阅读次数:
191
13.6 基类的析构函数为何要声明为virtual?解答:用对象指针来调用一个函数,有以下两种情况:如果是虚函数,会调用派生类中的版本。如果是非虚函数,会调用指针所指类型的实现版本。析构函数也会遵循以上两种情况,因为析构函数也是函数嘛,不要把它看得太特殊。 当对象出了作用域或是我们删除对象指针,析构...
分类:
编程语言 时间:
2014-12-10 00:28:26
阅读次数:
259
继承、封装和多态是面向对象编程的重要特性。其成员被继承的类叫基类(或父类),继承其成员的类叫派生类(或子类)。1、子类隐式获得父类的除构造函数和析构函数以外的所有成员(包括私有和非私有)。2、继承的单一性:c#不支持多重继承,子类只能有一个直接父类,但一个父类可以同时拥有多个子类。3、继承的传递性:...
分类:
其他好文 时间:
2014-12-09 19:22:20
阅读次数:
191