gpt4 book ai didi

c++ - 指示 double 值尚未初始化的最佳方法是什么?

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

我有一个 CS 类,它表示 3D 坐标系,即 (x, y, z)

class CS
{
private:
double x;
double y;
double z;
}

CS::CS()
{
x = NULL;//this causes x = 0//i want the address of x to be 0x000000 & not x = 0
y = NULL;
z = NULL:
}

我希望用户可以创建一个 CS (0, 0, 0)。在构造函数中,我想将 x、y 和 z 的地址初始化为 NULL。这是为了区分用户定义的 (0, 0, 0) 和默认值。我正在动态创建 CS 的对象,因此没有使用以下代码的意义:

class CS
{
private:
double *x;
double *y;
double *z;
}

CS:CS()
{
x = new double;
x = NULL;
//same for y & z
}

主要是,我想在不使用指针的情况下手动分配 0x000000 地址给任何变量(int 或 double 或 char)。有什么建议吗?

最佳答案

您不能将 x、y 和 z 的位置更改为 NULL,因为这些位置将始终偏离 CS 对象。它们将永远存在。并不是 CS 有一个 x 就像你有一辆汽车,它就像 CS 有一个 x 就像你有先。你不能有头脑。如果它们是整数,您将不得不使它们成为指针(就像您说的您不想做的那样),因为这是区分未初始化和已初始化的唯一方法。但是,double 有一个很少使用的神奇值:

CS:CS()
: x(std::numeric_limits<double>::quiet_NaN())
: y(std::numeric_limits<double>::quiet_NaN())
: z(std::numeric_limits<double>::quiet_NaN())
{ }

用户可能不会故意将 x、y 和 z 设置为(不是数字)。

关于c++ - 指示 double 值尚未初始化的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7893531/

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