【发布时间】:2016-07-23 01:04:33
【问题描述】:
我来自 node.js,我想知道是否有办法在 C++ 中执行此操作。什么是 C++ 等价物:
var string = "hello";
string = return_int(string); //function returns an integer
// at this point the variable string is an integer
所以在 C++ 中我想做一些类似这样的事情......
int return_int(std::string string){
//do stuff here
return 7; //return some int
}
int main(){
std::string string{"hello"};
string = return_int(string); //an easy and performant way to make this happen?
}
我正在使用 JSON,我需要枚举一些字符串。我确实意识到我可以将 return_int() 的返回值分配给另一个变量,但我想知道是否可以将变量的类型从字符串重新分配给 int 以便学习和可读性。
【问题讨论】:
-
不,这是不可能的(至少在 “一种简单而高效的方式来实现这一点?”)。 C++ 在编译时修复了所有变量类型。
-
请记住,静态类型的语言与强类型的语言不同。例如:JavaScript 是动态且弱的,它允许隐式类型转换(如 x = "3" + 5)。 Python 是动态且强大的,它允许显式类型转换(x = "3"+"5" 或 x=3+5,但不能混合)。 C++ 是静态的,如前所述,没有简单的方法,因为它不是预期的行为(您必须在编译时显式声明 x 的类型)
-
另一个方面涉及所谓的匈牙利符号,其中变量本身的名称表示其内容的预期数据类型。这可能会有所帮助,但也可能被视为一种不好的做法,因为它会导致动态语言的混乱以及静态语言的冗余
-
如果您使用
std::variant或boost::variant是可能的,但这意味着您已事先将变量声明为string或int。这通常也是一个可怕的想法。
标签: c++ variables variable-types