首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

子类重写父类深度复制方法,该怎么解决

2012-06-09 
子类重写父类深度复制方法请教大家一个问题,描述如下:父类Father提供了一个深度的复制函数: Father* dup()

子类重写父类深度复制方法
请教大家一个问题,描述如下:
父类Father提供了一个深度的复制函数: Father* dup()。返回父类的指针类型(对象在堆内存上创建)
子类重写这个函数,也需要提供深度复制功能,但子类不清楚父类里面是否有指针域。如何重写呢?(方法要健壮,不能有内存泄漏等)
语言:C++

我想了一天了,假设了好多方法,都有问题!这样的一个方法是否可以完成?谢谢!
我没什么分,不好意思 >_<

[解决办法]

C/C++ code
class Father{public:Father(){}virtual Father *dup(){return new Father;}};class Son:public Father{public:Son(){}virtual Son *dup(){return new Son;}};
[解决办法]
在子类的复制函数中先调用父类的复制函数,然后再写子类的复制操作。
[解决办法]
基本上,拷贝都是用复制构造来实现。

C/C++ code
base::base(const base &obj){    // 实现深拷贝。}
[解决办法]
如果你有父类代码的话,就自己加一个拷贝构造。如果没有源代码,那你就悲催了,做不到。

热点排行