{C++ 基础} {C++ 高级} {C#界面,C++核心算法} {设计模式} {C#基础}
方法二:使用抽象类来实现接口与实现的分离。x.h
x.cpp
posted on 2007-08-06 23:17 梦在天涯 阅读(10706) 评论(8) 编辑 收藏 引用 所属分类: CPlusPlus
听说boost::shared_ptr不大太让人信赖。 回复 更多评论
啊,为什么啊,我常用的就是在vector等容器中使用shared_ptr代替auto_ptr。 回复 更多评论
基本上没有用过往容器里面扔过智能指针。还是直接用raw指针。 回复 更多评论
第二种方法的create方法可以作为X class接口类的static方法! 第一种方法中,如果pimpl class需要访问CTest接口类基类的话,可以把pimpl class申明为CTest接口类的friendly类。 回复 更多评论
在 CTest 里面用 boost::shared_ptr 保持 CTestImp 的指针会有问题. 这样会造成不同的 CTest 对象对应到同一个 CTestImp 对象.CTest a;CTest b(a);也就是说 a.pimpl_.get() 会等於 b.pimpl_.get(). (假设 CTest::impl_ 为 public)我想这不是你想要的结果. 回复 更多评论
@fr3@K 这就要看CTest 是值语义还是指针语义了,对于指针语义,我觉得最好采用第二种接口类办法,这样概念上不会混淆,也便于将来派生新的功能。 回复 更多评论
第一种方式比较奇怪啊,感觉毫无意义啊 增加功能的角度有adapter模式 隔离的角度有proxy模式 第二种是典型的接口 回复 更多评论
长见识!!! 回复 更多评论