——1.7Policy Class的析构函数
1.避免一个对象被delete销毁
把析构函数做成protected。
由编译器保证
由于析构函数被保护,只要派生类才可以摧毁这个对象,外界对这个对象的delete调用就会被编译器阻止。
2.避免一个对象被创建
把构造函数非公有化。
由编译器保证
这种对象的创建要借助自身的静态方法(构造函数私有化或保护化)或者依靠子类(构造函数保护化)。
3.阻止一个类被继承
把构造函数私有化。
由编译器保证
继承私有化构造函数的类可以被编码,但是无法创建对象。
4.避免一个类被继承
把类做成局部的
由可见范围保证
如果开发者想一个类不被继承,那最好的办法是不让别人看它,局部类有这个特性。作用域外无法看见这个类,自然五继承可言。
5.对象必须被继承
有纯虚函数就可以。
编译器保证。
带有纯虚函数的类是无法被创建对象的,所以如果继承的化,无法创建实例。
6.对象只有一个
单件或做成静态。
前者单件本身保证,后者语言规则保证。
其实如果深究的化,这两种方式一个意思。
1.避免一个对象被delete销毁
把析构函数做成protected。
由编译器保证
由于析构函数被保护,只要派生类才可以摧毁这个对象,外界对这个对象的delete调用就会被编译器阻止。
2.避免一个对象被创建
把构造函数非公有化。
由编译器保证
这种对象的创建要借助自身的静态方法(构造函数私有化或保护化)或者依靠子类(构造函数保护化)。
3.阻止一个类被继承
把构造函数私有化。
由编译器保证
继承私有化构造函数的类可以被编码,但是无法创建对象。
4.避免一个类被继承
把类做成局部的
由可见范围保证
如果开发者想一个类不被继承,那最好的办法是不让别人看它,局部类有这个特性。作用域外无法看见这个类,自然五继承可言。
5.对象必须被继承
有纯虚函数就可以。
编译器保证。
带有纯虚函数的类是无法被创建对象的,所以如果继承的化,无法创建实例。
6.对象只有一个
单件或做成静态。
前者单件本身保证,后者语言规则保证。
其实如果深究的化,这两种方式一个意思。