gpt4 book ai didi

c++ - 类中未定义/未初始化的默认值

转载 作者:太空宇宙 更新时间:2023-11-04 15:53:57 26 4
gpt4 key购买 nike

假设你有这个类:

class A
{
public:
A () {}
A (double val) : m_val(val) {}
~A () {}
private:
double m_val;
};

创建 A 的实例后,如何检查 m_val 是否已初始化/定义?换句话说,有没有办法知道 m_val 是否已被初始化/定义?我想,类似于 Python 中的 defined 运算符。 (但如果我错了请纠正我。)

我想通过以下方式修改类和 c-tors:

class A
{
public:
A () : defined(false) {}
A (double val) : m_val(val), defined(true) {}
~A () {}
private:
double m_val;
bool defined;
};

您如何评价这个解决方案?有什么建议吗?

TIA,克里斯

最佳答案

您需要在默认构造函数中设置一个合理的默认值,否则它的值是未定义的。这基本上意味着它将是一个随机值——可能是 0、NaN 或 2835.23098——除非您明确设置它,否则无法判断。

class A
{
public:
A () : m_val(0.0) {}
A (double val) : m_val(val) {}
~A () {}
private:
double m_val;
};

关于c++ - 类中未定义/未初始化的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2948605/

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