原型模式和C++的拷贝构造函数有什么区别
都是基于個(gè)人理解,本文是為了幫助記憶。
相同點(diǎn):原型模式和拷貝構(gòu)造函數(shù)都是要產(chǎn)生對(duì)象的復(fù)制品。
不同點(diǎn):原型模式實(shí)現(xiàn)的是一個(gè)clone接口,注意是接口,也就是基于多態(tài)的clone虛函數(shù)。也就是說(shuō)原型模式能夠通過(guò)基類(lèi)指針來(lái)復(fù)制派生類(lèi)對(duì)象。拷貝構(gòu)造函數(shù)完不成這樣的任務(wù)。
? ? ? ? ? ? ? ?原型模式的核心是克隆,構(gòu)造函數(shù)只是克隆的一個(gè)辦法而已。
class?base
{
??public?:?
??base();
??base(base?&obj);
??virtual??~base();
??virtual?base?*clone()?{?return?new?base(*this)?;?};
};
class?derived?:?public?base
{
??public?:?
??derived();
??derived(??derived?&);
?virtual?base?*clone(){return?new?derived?(*this);?}
....
};
base?*obj1?=?new?base?;?
base?*obj2?=?new?derived?;
base?*obj3?=?obj1?.clone();
base?*obj4?=?obj12.clone();
轉(zhuǎn)載于:https://www.cnblogs.com/jylz/p/10648439.html
總結(jié)
以上是生活随笔為你收集整理的原型模式和C++的拷贝构造函数有什么区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: springboot系列十五、sprin
- 下一篇: axios get post下载文件