我不想要两份代码

cpp99 2004-03-30 04:23:40
我有两个类A和B
他们有三个成员函数完全一样,而且代码特别长,他们都调用到了C类的成员函数
我不想要两份代码
请问:我有什么选择?
...全文
22 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
cpp99 2004-04-05
  • 打赏
  • 举报
回复
bridge 模式
是什么东西?
cpp99 2004-04-05
  • 打赏
  • 举报
回复
我现在是新写一个类
把上面所说的三个函数放到里面去
然后两个类A和B都调用新类的成员函数

因为我的软件的框架已经定下了
不能随便给两个类A和B再弄一个父类

请各路高人评一下我的做法

Wolf0403 2004-04-05
  • 打赏
  • 举报
回复
老土:这就是我说的组合了:)
conghonglei 2004-04-04
  • 打赏
  • 举报
回复
使用private 继承,表达 WORK_LIKE_THIS 语义
Wolf0403 2004-04-04
  • 打赏
  • 举报
回复
不能“滥用”不代表不能用。这里的话用 private inheritance + using declaration 或者 组合 + bridge 模式都可以。(其实本质是一样的)
meijing 2004-04-04
  • 打赏
  • 举报
回复
公共部分做基类?

不是大师们都强调不要滥用继承吗?
如果不是真的继承关系的话还是将公共部分做成单独的类。
A,B都包含该类为成员变量。
cgsw12345 2004-04-04
  • 打赏
  • 举报
回复
private inheritance + using declaration 或者 组合 + bridge 模式
conghonglei 2004-04-04
  • 打赏
  • 举报
回复
使用继承时是应当仔细分析一下,
A 和B 存在共同的特性,应当考虑是否应抽象出一个层出来。

另外public 继承表达IS_A关系,属于接口继承。
private 继承表达WORK_LIKE_A 或 USABLE_AS_A 关系,属于实现继承。在你的这种情况下,private继承也应当注意只使用base class的公有接口,

在《c++设计新思维》中提到一个“正交分解”的概念,你可以参考一下应该如何分析设计类,以及使用继承。
Bruceleexiaokan 2004-03-30
  • 打赏
  • 举报
回复
把相同提出来做基类,由于基类只用于实现A和B,可不做接口,故private继承就可以了
pinboo 2004-03-30
  • 打赏
  • 举报
回复
把相同提出来做基类
classrect 2004-03-30
  • 打赏
  • 举报
回复
从A,B中提取出一个基类(Super Class),
这个基类去关联C。
hpho 2004-03-30
  • 打赏
  • 举报
回复
意思是叫你把这部分提取出来.
不过我想知道A和B应该有关系吧?!
cpp99 2004-03-30
  • 打赏
  • 举报
回复
Extract Class或者Extract Super Class
是什么意思?
zouxueping 2004-03-30
  • 打赏
  • 举报
回复
把相同部分提取出来组成一个基类
北极猩猩 2004-03-30
  • 打赏
  • 举报
回复
Extract Class或者Extract Super Class

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧