提问人:YoonSeok OH 提问时间:6/7/2023 更新时间:6/7/2023 访问量:53
延迟复杂类的初始化是糟糕的类设计吗?
Is it bad class design to have deferred initialization of complex class?
问:
我知道 RAII,并试图坚持单步实例化。只要给定了成员的所有参数,instance 就是有效的,它会在析构函数处进行销毁。
但是,如果类足够大,可以存储多个结构,则构造函数很快就会有太多的参数。此外,如果一个类具有依赖实例化,例如 LoadFromXXX 或 InitializeFromXXX 类型的函数,那么 2 步实例化对我来说似乎是最佳选择。特别是,如果类实例是其他类的成员(不是指针),则构造函数链开始,并且必须获取所有构造函数参数。换句话说,很难插入这样的操作
Instance.LoadConfig(FilePath);
Instance.Create();
对我来说,通过应用与构建器有些相似的应用来应对过多的参数情况和延迟的实例化,同时丢失单步 RAII,这似乎是很好的解决方法。可以使用 if 在析构函数中管理发布问题。
if (pAllocated)
delete pAllocated;
Or pAllocated->Release();
我能想到的这种方法的唯一问题是这会打开部分有效的实例或空实例。
这是不可接受的坏事吗?
答: 暂无答案
评论