用继承还是类成员

采石工 2013-01-31 02:17:35
我要实现一个类DateTime,已实现Date和Time类。请问是将Date和Time作为DateTime类的成员变量好,还是将由Date和Time派生DateTime好呢?请问为什么?
...全文
415 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
采石工 2013-02-01
  • 打赏
  • 举报
回复
谢谢各位的回复,我开始实现DateTime时也是采用复合(果然复合很符合直觉),后来想到可以用继承。就想问问大家哪一个好,结果很一致,现在我可以安心的使用复合了。
stereoMatching 2013-01-31
  • 打赏
  • 举报
回复
当你需要virtual的时候,还可以考虑用delegate或strategy的方法 甚至是设计一个generic的接口

void generic_interface(std::function<void()> const &A);
exceptional c++的items 20~25对此有详细的阐述 很务实的比较了不同方法的优劣
Crazy_Number 2013-01-31
  • 打赏
  • 举报
回复
引用 2 楼 Crazy_Number 的回复:
看情况吧。 从你的叙述我没看出来date、time有职责。 如果是is a的关系:也即datetime是一个date、time。现实例子:鸟是一种动物,这里的动物是一个基类。 如果是have a的关系:也是datetime拥有date、time。现实例子:汽车有很多部件共同协作运作。 汽车包含了部件对象,运用了部件的方法。
想想date,time的职责吧。 is a就用继承 have a就用组合
疯狂的红豆 2013-01-31
  • 打赏
  • 举报
回复
这个有时候组合和继承都可以达到一样的效果,可是我曾经看到过一句话,有关于C++编程的,能用组合的地方不要用继承。因为组合的话关于内存的布局很清晰明朗,如果是继承的话会引起对象布局的变化,很不好理解
zhcosin 2013-01-31
  • 打赏
  • 举报
回复
显然成员好些,符合直观认识。
小鱼儿霸 2013-01-31
  • 打赏
  • 举报
回复
我觉得复合貌似更符合逻辑思维。不考虑细节。
风行踩火轮 2013-01-31
  • 打赏
  • 举报
回复
我觉得用复合还是好一些,看你具体的需求了
prajna 2013-01-31
  • 打赏
  • 举报
回复
FYI class Time { unsigned long long time; virsual int setTime(); virsual int getTime(); }; class Date : public Time { }; class Clock: public Time { }; class DateClock { Date date; Clock clk; ... }
Crazy_Number 2013-01-31
  • 打赏
  • 举报
回复
看情况吧。 从你的叙述我没看出来date、time有职责。 如果是is a的关系:也即datetime是一个date、time。现实例子:鸟是一种动物,这里的动物是一个基类。 如果是have a的关系:也是datetime拥有date、time。现实例子:汽车有很多部件共同协作运作。 汽车包含了部件对象,运用了部件的方法。
  • 打赏
  • 举报
回复
个人认为 复合是优于继承的 但针对你的问题,他们有多个抽象的方法,比如Get(),Set(),Now()等这些方法的话,用继承比较好

65,187

社区成员

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

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