子类重写父类深度复制方法
请教大家一个问题,描述如下:
父类Father提供了一个深度的复制函数: Father* dup()。返回父类的指针类型(对象在堆内存上创建)
子类重写这个函数,也需要提供深度复制功能,但子类不清楚父类里面是否有指针域。如何重写呢?(方法要健壮,不能有内存泄漏等)
语言:C++
我想了一天了,假设了好多方法,都有问题!这样的一个方法是否可以完成?谢谢!
我没什么分,不好意思 >_<
[解决办法]
class Father{public:Father(){}virtual Father *dup(){return new Father;}};class Son:public Father{public:Son(){}virtual Son *dup(){return new Son;}};
[解决办法]
在子类的复制函数中先调用父类的复制函数,然后再写子类的复制操作。
[解决办法]
基本上,拷贝都是用复制构造来实现。
base::base(const base &obj){ // 实现深拷贝。}
[解决办法]
如果你有父类代码的话,就自己加一个拷贝构造。如果没有源代码,那你就悲催了,做不到。