2012-01-22 21 views
3

我想知道是否有可能,例如我定义int temp然后,我将temp定义为float我们可以在C++中删除一个变量的名字吗?

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

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

+0

显示您的代码。你可以有两个不同的块,每个块都有它自己的'temp'变量(你可以使它成为'static'来保持它从一次调用到另一个相同例程的值)。 –

回答

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 
     ... 
    } 
} 
+0

如果没有'if'和'else',这可能会提供更多信息:花括号本身是允许的,没有额外的流量控制,只是为了引入新的范围。 – Potatoswatter

+0

是啊@Potatoswatter,你是对的。 – 0605002

2

在C++中没有删除变量名称的概念。然而,自动变量的生命周期和可见度被限制到他们正在申报的范围,以便你可以做类似如下:

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

    { 
     float temp; 
     ... 
    } 
} 
0

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

你也可以使用匈牙利命名法,像这样:

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

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

想想你想用这个变量来实现什么,并相应地命名它。

0

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

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

1

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

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

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

一般来说,尽管在同一个函数中声明同名变量是不好的做法。它通常只会导致开发人员混淆,并且您认为自己需要两次相同的已命名变量的位置通常表示您需要两个单独的函数

相关问题