父类用构造函数初始化数据,子类如何避免重新初始化这些数据?

ylongwu 2013-11-23 03:19:18
问题是这样的:

父类A的构造函数中调用了很多函数,用来初始化一些参数。

父类一共有七八个子类,每个子类都默认要调用一次父类的构造函数,因此父类构造函数中的函数需要被重复运行七八次,而且每次结果都是一样的。

请问用什么方法可以避免这种情况? 即子类只需要共享父类初始化之后的结果,而不是去重复初始化这些参数。
...全文
217 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2013-11-23
  • 打赏
  • 举报
回复
只要父类初始化,出现在初始化表里,不就避免了么????? 难道还有什么特殊需求么?????
碼上道 2013-11-23
  • 打赏
  • 举报
回复
奇怪的问题,这样的设计就有问题
baichi4141 2013-11-23
  • 打赏
  • 举报
回复
上帝首先造了男人,并赋给他双眼 上帝然后造了女人,并赋给她双眼 楼主说,赋给双眼这个工作被重复了两次,过程和结果都完全一样,应该尽量避免 一句话,请分清类型和对象
worldy 2013-11-23
  • 打赏
  • 举报
回复
引用 4 楼 ylongwu 的回复:
[quote=引用 3 楼 worldy 的回复:] [quote=引用 楼主 ylongwu 的回复:] 问题是这样的: 父类A的构造函数中调用了很多函数,用来初始化一些参数。 父类一共有七八个子类,每个子类都默认要调用一次父类的构造函数,因此父类构造函数中的函数需要被重复运行七八次,而且每次结果都是一样的。 请问用什么方法可以避免这种情况? 即子类只需要共享父类初始化之后的结果,而不是去重复初始化这些参数。
这个问题很奇怪,7-8个子类,子类之间有没有什么关系,父类怎么会被重复7-8次? 父类A 子类 C D E F G H I J K 定义对象 C c ; D d; .... c和d有什么关系,怎么可能调用7-8次?[/quote] C和D没有关系,但是C c以及D d的时候,不都要调用它们父类A的构造函数吗? [/quote] c调用A的构造函数是构造c用 d调用A的构造函数是构造d用 各管各的对象
dyw 2013-11-23
  • 打赏
  • 举报
回复
可以将重复计算的函数抽出来作为辅助类。父类或子类使用同一个辅助类对象。
ylongwu 2013-11-23
  • 打赏
  • 举报
回复
引用 3 楼 worldy 的回复:
[quote=引用 楼主 ylongwu 的回复:] 问题是这样的: 父类A的构造函数中调用了很多函数,用来初始化一些参数。 父类一共有七八个子类,每个子类都默认要调用一次父类的构造函数,因此父类构造函数中的函数需要被重复运行七八次,而且每次结果都是一样的。 请问用什么方法可以避免这种情况? 即子类只需要共享父类初始化之后的结果,而不是去重复初始化这些参数。
这个问题很奇怪,7-8个子类,子类之间有没有什么关系,父类怎么会被重复7-8次? 父类A 子类 C D E F G H I J K 定义对象 C c ; D d; .... c和d有什么关系,怎么可能调用7-8次?[/quote] C和D没有关系,但是C c以及D d的时候,不都要调用它们父类A的构造函数吗?
worldy 2013-11-23
  • 打赏
  • 举报
回复
引用 楼主 ylongwu 的回复:
问题是这样的: 父类A的构造函数中调用了很多函数,用来初始化一些参数。 父类一共有七八个子类,每个子类都默认要调用一次父类的构造函数,因此父类构造函数中的函数需要被重复运行七八次,而且每次结果都是一样的。 请问用什么方法可以避免这种情况? 即子类只需要共享父类初始化之后的结果,而不是去重复初始化这些参数。
这个问题很奇怪,7-8个子类,子类之间有没有什么关系,父类怎么会被重复7-8次? 父类A 子类 C D E F G H I J K 定义对象 C c ; D d; .... c和d有什么关系,怎么可能调用7-8次?
  • 打赏
  • 举报
回复
父类单独做成一个类 子类取消从父类继承,都引用同一个对象即可.
turing-complete 2013-11-23
  • 打赏
  • 举报
回复
虚拟继承好像可以达到这样的效果,但是要求这些派生类都要在同一个继承关系中。

64,683

社区成员

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

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