我想知道是否有可能例如我定义int temp
然后我将temp
定义为float
。
我的意思是我想在.cpp
文件中多次使用名称“temp”。这可能吗?如果有可能,怎么样?
编辑:我的意思是在同一范围内。
答案 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文件中的其他方法。