是否可以在“ if”语句中声明变量?

问题描述 投票:0回答:2

我想在“ 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
} 

可以这样做吗?通过使用相同的变量名称,如何声明具有不同数据类型(在不同条件下)的变量?

c++ variable-declaration
2个回答
0
投票

您需要的是调度适当的行为:

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,因此实际上并没有给您任何好处。


0
投票

谨此致谢。您在范围内声明的名称变量隐藏在区域或派生类的外部。

您总是可以使用对值使用不同名称的引用。

Ref:3.3.7 / 1

名称可以通过在名称中的相同名称的显式声明隐藏。嵌套的声明性区域或派生类(10.2)。

© www.soinside.com 2019 - 2024. All rights reserved.