我们可以在C ++中删除变量的名称吗?

时间:2012-01-22 16:20:01

标签: c++

我想知道是否有可能例如我定义int temp然后我将temp定义为float

我的意思是我想在.cpp文件中多次使用名称“temp”。这可能吗?如果有可能,怎么样?

编辑:我的意思是在同一范围内。

6 个答案:

答案 0 :(得分:11)

不,您不能在同一范围中声明两个具有相同名称的变量。它们的范围必须不同。

像这样:

int temp; // this is global

struct A
{
    int temp; // this is member variable, must be accessed through '.' operator
};

int f1()
{
    int temp; //local temp, though the global one may by accessed as ::temp
    ...
}

int f2()
{
    int temp; //local

    // a new scope starts here
    {
        int temp; //local, hides the outer temp
        ...
    }

    // another new scope, no variable of the previous block is visible here 
    {
        int temp; // another local, hides the outer temp
        ...
    }
}

答案 1 :(得分:3)

没有在C ++中删除变量名称的概念。但是,自动变量的生命周期和可见性仅限于它们声明的范围。因此,您可以执行以下操作:

void foo()
{
    {
        int temp;
        ...
    }

    {
        float temp;
        ...
    }
}

答案 2 :(得分:1)

对于.cpp文件中的不同类型和变量,绝对可以使用相同的名称。它甚至可以在同一个功能中完成。唯一的要求是名称在不同的范围内。

void LegalExample() { 
  int temp = 42;
  if (...) {
    float temp;
    ...
  }
}

void IllegalExample() {
  int temp;
  float temp;
}

一般来说,虽然在同一个函数中声明同名变量被认为是不好的做法。它通常只是导致开发人员混淆,你真正认为你需要两次相同的命名变量的地方通常表明你需要2个单独的函数

答案 3 :(得分:0)

我不相信这是可能的。您可以将两个名为temp的变量放在不同的名称空间中。

你也可以使用匈牙利符号:

void foo()
{
    float fTemp;
    int iTemp;
}

答案 4 :(得分:0)

你应该避免这种情况,因为变量应该只做一件事。即使您随着时间的推移使用不同的范围,您也可能会感到困惑。最好用不同的名称定义几个varibales,而不是重用一个。

想想你想用这个变量做什么,并相应地命名。

答案 5 :(得分:0)

这取决于您的范围。您可以在特定范围内定义一次变量名称。您无法更改该变量的类型。

但是您可以在其他范围中使用相同的变量名称,例如cpp文件中的其他方法。