作为Ruby中的一个例子(1.8)
i = 4
i.class => fixnum
i += 1.3
i.class => float
Run Code Online (Sandbox Code Playgroud)
这可以用C++实现吗?
例如
template<class T>
struct Number {};
Number<int> foo;
foo.changeTypeToFloat(); // <-- Possible?
// foo now Float?
Run Code Online (Sandbox Code Playgroud)
C++是一种静态类型的语言.变量具有固定类型.您在语言级别可以做的最好的事情是转换为新变量,例如:
int i = 5;
float f = static_cast<float>(i);
Run Code Online (Sandbox Code Playgroud)
或者,您可以编写变体类,并在内部处理转换.但对于上述情况,这确实是语法糖.