More Effective C++ -----将构造函数和非成员函数虚拟化

来源:互联网 发布:淘宝外卖超出配送范围 编辑:程序博客网 时间:2024/06/11 04:29

本篇有三个重点:

1.虚拟构造函数

由于类自身的构造函数是无法定义成虚函数的,但是往往会有根据不同输入产生不同对象的需求,于是出现了以下函数:

clss NLComponent;class TextBlock: public NLComponent{}class Graphic:public NLComponent{}class NewsLetter{public:private:   static NLCompoment* readComponent(istream & str){//此处为实现,穿件不同的类,此函数即称为虚拟构造函数}}

虚拟构造函数的应用场合很多,类工厂等都是由此原理产生。

2.虚拟拷贝构造函数

class TextBlock :public NLComponent{public: virtual TextBlock* clone() const  //虚拟拷贝构造函数{return new TextBloct(*this);}}

上述函数内部的拷贝操作与类的拷贝构造函数完全保持一致,并且具有多态的性质。

3.非成员函数定义为虚函数

原则上是走不通的,毕竟不是成员函数。但是通过以下方法可以实现:在类中写虚函数,在外部调用虚函数即可

0 0
原创粉丝点击