{C++ 基礎(chǔ)} {C++ 高級(jí)} {C#界面,C++核心算法} {設(shè)計(jì)模式} {C#基礎(chǔ)}
方法二:使用抽象類來實(shí)現(xiàn)接口與實(shí)現(xiàn)的分離。x.h
x.cpp
posted on 2007-08-06 23:17 夢在天涯 閱讀(10796) 評(píng)論(8) 編輯 收藏 引用 所屬分類: CPlusPlus
聽說boost::shared_ptr不大太讓人信賴。 回復(fù) 更多評(píng)論
啊,為什么啊,我常用的就是在vector等容器中使用shared_ptr代替auto_ptr。 回復(fù) 更多評(píng)論
基本上沒有用過往容器里面扔過智能指針。還是直接用raw指針。 回復(fù) 更多評(píng)論
第二種方法的create方法可以作為X class接口類的static方法! 第一種方法中,如果pimpl class需要訪問CTest接口類基類的話,可以把pimpl class申明為CTest接口類的friendly類。 回復(fù) 更多評(píng)論
在 CTest 里面用 boost::shared_ptr 保持 CTestImp 的指針會(huì)有問題. 這樣會(huì)造成不同的 CTest 對(duì)象對(duì)應(yīng)到同一個(gè) CTestImp 對(duì)象.CTest a;CTest b(a);也就是說 a.pimpl_.get() 會(huì)等於 b.pimpl_.get(). (假設(shè) CTest::impl_ 為 public)我想這不是你想要的結(jié)果. 回復(fù) 更多評(píng)論
@fr3@K 這就要看CTest 是值語義還是指針語義了,對(duì)于指針語義,我覺得最好采用第二種接口類辦法,這樣概念上不會(huì)混淆,也便于將來派生新的功能。 回復(fù) 更多評(píng)論
第一種方式比較奇怪啊,感覺毫無意義啊 增加功能的角度有adapter模式 隔離的角度有proxy模式 第二種是典型的接口 回復(fù) 更多評(píng)論
長見識(shí)!!! 回復(fù) 更多評(píng)論