我想在“ if”语句内声明一个变量,并在“ if”语句后对该变量做一些事情。这是我的简化代码:
#include <iostream>
using namespace std;
int main() {
int a;
cin >> a;
if (a==1)
string b;
else
int b;
cin >> b;
//and some long codes using variable b
}
可以这样做吗?通过使用相同的变量名称,如何声明具有不同数据类型(在不同条件下)的变量?
您需要的是调度适当的行为:
int main() {
int a;
std::cin >> a;
switch (a) {
case 1:
input_string();
break;
default:
input_int();
break;
}
}
这些功能中的每个功能都可以执行所需的操作。在C ++中,您不能有一个定义不明确的变量,编译器需要知道精确地在生成代码时如何键入每个变量。
您可以使用模板或替代方法更近一步,其中可以具有两个名称相同但参数不同的函数,例如:
void input(std::string& b);
void input(int& b);
在这里您仍然需要具有匹配类型的本地b
,因此实际上并没有给您任何好处。
谨此致谢。您在范围内声明的名称变量隐藏在区域或派生类的外部。
您总是可以使用对值使用不同名称的引用。
Ref:3.3.7 / 1
名称可以通过在名称中的相同名称的显式声明隐藏。嵌套的声明性区域或派生类(10.2)。