日期:2014-05-19  浏览次数:20815 次

一道笔试题求解
程序中有一个虚基类B,有许多由B派生的类D1~Dn。在B中有一个方法,其作用是创建一个当前对象的副本。那么,在外部代码调用D1~Dn的此方法时,应该如何创建具体派生类的实例?请综合考虑效率和可扩展性。



------解决方案--------------------
因为我自认对这道题理解的基础和简单,我有点儿怀疑,是真的太基础简单了,还是自己的水平不够.

不过,还是说说我的理解,看看有没有高手帮我指正提高一下.呵呵.

我的答案: 首先,在虚方法定义上,肯定返回的是B类对象.所以,首先在子类中实现的些方法返回值也就是一个B类型的子类实例喽.所以,当然需要做一个向子类型的强制转换喽.

我能想到的方法好象也就只有这一种而已吧. 因为题里是问 "在外部代码调用D1~Dn的此方法时,应该如何创建具体派生类的实例? " . 我怎么想也只是觉得重点可能在于如何定义虚方法上吧.或者问问子类如何重写该方法. 现在问的是如何调用,不太明白考点和用意.

------解决方案--------------------
B d = new D1();

d.方法()
------解决方案--------------------
在外部代码调用D1~Dn的此方法时,应该如何创建具体派生类的实例?
--------------------------

直接 D1 d1=new D1(); 就成了,或者我没懂你的意思, 派生类继承了基类的方法 d1.方法();