Есть ли способ инициализировать переменную как тип общего числа или типа int, а затем изменить ее тип, например, на удвоение?
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<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);