gpt4 book ai didi

c++ - C++ 对象是否应该始终处于有效状态?

转载 作者:IT老高 更新时间:2023-10-28 22:36:25 24 4
gpt4 key购买 nike

无论何时构造一个对象,构造函数是否应该始终将其保持在“初始化”状态?

例如,如果一个 Image 类有两个构造函数,一个接受文件路径字符串,另一个不接受参数,那么后者让图像对象处于无效状态是不是不好的做法?

假设编写的类可以处理这两种状态。

我问这个是因为我发现在很多情况下几乎有必要使用默认构造。尤其是当一个对象是一个类的成员并且您想在该类的构造函数中初始化它时。

编辑:我知道成员初始化程序列表。我发现了一些我想在它所在的类的构造函数中构造对象的情况,而不是之前。虽然,我知道这可能比任何其他替代方案都更危险。

最佳答案

归结为“有效状态”的定义:如果你的类的方法处理路径为空时的状态,那么路径为空的状态就是有效状态,绝对可以接受。

但是,从编码的角度来看,这可能不是最佳选择,因为您可能需要添加多个检查才能使路径有效。您通常可以通过实现 State Pattern 来管理复杂性。 .

I find it almost necessary to have a default construct in a lot of cases. Especially when an object is a member of a class and you want to initialise it IN the constructor of that class.

您不需要默认构造函数来在它所属的类的构造函数中初始化对象,只要在初始化列表中构造依赖项即可。

关于c++ - C++ 对象是否应该始终处于有效状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22408804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com