应该在构造函数中执行可能需要一些时间的操作,还是应该构造对象然后稍后进行初始化.
例如,当构造表示目录结构的对象时,应该在构造函数中完成对象及其子对象的填充.显然,目录可以包含目录,而目录又可以包含目录等.
这个优雅的解决方案是什么?
可能重复:
在构造函数中应该完成多少工作?
我心里想着一些建议,但我不记得推理.
我似乎记得在某些时候阅读一些建议(不记得来源)C++构造函数不应该做真正的工作.相反,他们应该只初始化变量.建议继续解释实际工作应该在某种init()方法中完成,在创建实例后单独调用.
情况是我有一个代表硬件设备的类.构造函数调用查询设备的例程以构建描述设备的实例变量对我来说具有逻辑意义.换句话说,一旦new实例化对象,开发人员就会收到一个准备好使用的对象,不需要单独调用object-> init().
施工人员不应该做真正的工作有充分的理由吗?显然它可能会减慢分配时间,但如果在分配后立即调用单独的方法,则不会有任何不同.
只是想弄清楚我目前没有考虑的问题可能导致了这样的建议.