56 桥接模式的使用范围
在以下的情况下应当使用桥梁模式:
1.如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。
2.设计要求实现化角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端是完全透明的。
3.一个构件有多于一个的抽象化角色和实现化角色,系统需要它们之间进行动态耦合。
4.虽然在系统中使用继承是没有问题的,但是由于抽象化角色和具体化角色需要独立变化,设计要求需要独立管理这两者。
57 析构函数的特点
1. 与构造函数相对应
2. 与构造函数的作用相反
3. 析构函数的形式~类名( ){…}特点:
4. 固定的函数名称~类名( )
5. 没有返回类型
6. 没有参数
7. 不可以重载
8. 一般由系统自动的调用
58 什么时候会调用析构函数
对象生命周期结束的时候自动调用,你也可以主动调用,不过主动调用的析构函数不会执行销毁空间的功能(如果对象有申请空间的话)
59基类的构造函数/析构函数能否被派生类继承
虽然继承了构造和析构函数,却不能象定义了一样使用,缺省以外的构造函数,只能用在初始化表中析构函数会自动调用。缺省构造函数,可以自动调用
60 为什么要定义基类虚析构函数
C++中基类采用virtual虚析构函数是为了防止内存泄漏。具体地说,如果派生类中申请了内存空间,并在其析构函数中对这些内存空间进行释放。假设基类中采用的是非虚析构函数,当删除基类指针指向的派生类对象时就不会触发动态绑定,因而只会调用基类的析构函数,而不会调用派生类的析构函数。那么在这种情况下,派生类中申请的空间就得不到释放从而产生内存泄漏。所以,为了防止这种情况的发生,C++中基类的析构函数应采用virtual虚析构函数