构造函数

构造函数只初始化没有实际意义的成员变量。需要初始化的数据在 init() 方法中集中初始化。

定义: 在构造函数中执行初始化操作

优点: 排版方便,无需担心类是否初始化

结论:

  • 构造函数中:仅对成员变量进行基本的初始化,如将指针设置为nullptr,或将变量设置为默认值。
  • init() 方法中:执行所有需要初始化的操作,如资源分配、依赖注入等。
  • 初始化状态标记:增加一个成员变量(如bool initialized)来标记对象是否已经成功初始化。

示例

class MyClass {
public:
    MyClass() : initialized(false) {
        // 构造函数中只进行基本的初始化
    }

    bool init() {
        // 执行复杂的初始化逻辑
        if (complexInitialization()) {
            initialized = true;
            return true;
        }
        return false;
    }

    bool isInitialized() const {
        return initialized;
    }

private:
    bool initialized;
    bool complexInitialization() {
        // 资源分配、依赖注入等操作
        // 返回初始化是否成功
    }
};