有什么方法可以将变量初始化为通用数字类型或 int 然后将其类型更改为例如 double ?
TYPE x = 4;
// commands changing its type
here it(variable x) became double.
我知道这很奇怪。
变量必须具有相同的名称。
有什么方法可以将变量初始化为通用数字类型或 int 然后将其类型更改为例如 double ?
TYPE x = 4;
// commands changing its type
here it(variable x) became double.
我知道这很奇怪。
变量必须具有相同的名称。
不,C++ 是一种静态类型的语言。声明变量时,类型是固定的。
您可以使用工会做您所描述的事情,但需要非常小心,例如
union DoubleInt
{
int i;
double d;
};
DoubleInt X;
X.i = 4;
// ... whatever
X.d = X.i;
X.d += 0.25;
但工会真的只是一个明智的选择,你不顾一切地打包。您还可以创建一个可以表现为 double 或 int 的类,但实际上,您所说的听起来不像是在以 C++ 方式思考。
最后,boost::variant可能会做你想做的事?
虽然无法更改变量的类型,但您可以定义能够表示各种类型的变量的类型。这通常称为变体。去获取Boost.Variant,它允许你编写如下代码:
boost::variant<int, double> t_either_int_or_double;
t_either_int_or_double = 1;
// now it is "int"
assert(boost::get<int>(t_either_int_or_double);
t_either_int_or_double = 1.0;
// now it is "double"
assert(boost::get<double>(t_either_int_or_double);