C++ virtual constructors virtual copy constructors 以及non-memeber functions的行为虚化

来源:互联网 发布:adams软件简介 编辑:程序博客网 时间:2024/05/21 18:55

 

  C++中,所谓的 virtual constructors是某种函数,视其获得的输入,可产生不同类型的对象。-----《more effective c++》

  virtual constructors 在许多情况下有要有用,其中之一就是从磁盘读取对象信息。

 

   下面是一个小实例,比如,我在项目的根目录下,新建一个文本文件 a1.txt,文件中的内容是(Derone,Derother),我现在要实现的功能就是,可以根据文件中的内容,调用相应类中的方法。

先看一下代码,再继续分析

代码如下:

 

代码虽然有点长,但是很简单,首先,从main()函数开始,调用open_file()函数,打开文件,就返回读文件流 in.

然后, readcomponet()函数,实现了 virtual constructor 函数的功能,他根据读入文件内容的不同,返回不同类型的指针,并将其添加到vector 容器里,容器的类型是Base*(基类指针),因此C++多态机制就发挥作用了。