如何在块的中途重命名变量?

时间:2010-07-05 02:34:18

标签: c++

在C ++中,如何在块的中途重命名变量?引用和宏感觉不对。

7 个答案:

答案 0 :(得分:12)

你不能。

但是你可以引用它并以不同的“名称”访问它。 如果你真的不喜欢变量,只需离开当前块,从函数返回,离开块。

答案 1 :(得分:8)

使用参考。

int old_name = 1;
// ...
int& new_name = old_name;
new_name = 2;

但你为什么要这样做?

答案 2 :(得分:1)

我猜你可以做一些非常糟糕的事情:

int _internal;

#define foo _internal
foo = 3;
#undef foo
#define bar _internal
std::cout << bar;

但是我永远看不到这个理由。

答案 3 :(得分:1)

如果变量的目的在块的中途发生变化,您可能希望将块拆分为两个方法/函数,并将变量作为参数传递给每个。

或者,如果块的前半部分生成变量的值而后半部分消耗它,则让第一个函数返回变量,第二个函数使用它。

(编辑) 另请注意,您可以通过将局部变量放在额外的块定义中来避免临时名称冲突:例如......

int x()
{
    int y = 0;
    {
        int i = /* create i */;
        y = compute_y(i);
    }

    int z = 0;
    {
        int i = /* create another i */;
        z = compute_z(y, i);
    }
    return z;
}

在这个函数中,变量i可以在不同的子块中声明两次,并且名称不会发生冲突,因为在创建第二个i之前,第一个i将超出范围

就个人而言,如果我有足够大的功能需要这种范围,我会将其拆分为多个较小的函数,如上所述。

答案 4 :(得分:1)

我和其他人在一起 - 你为什么要这样做?因为很难想象一个合理的原因。总有可能有理性的理由提供它。

这里有负面回应的充分理由。做你想要的东西很容易成为维护的噩梦。英语中有很多单词可以正确命名变量,作为程序员,你可以自己编写。

无论如何,这有点像叫你的女儿吉尔出生,然后在她十三岁生日时突然改名为苏西。当你的烦恼刚刚开始时,实际上会引起麻烦。

戴夫

答案 5 :(得分:0)

您拥有的最佳选择是创建一个新变量并将其设置为旧变量然后删除旧变量。虽然我无法想象为什么你想要

答案 6 :(得分:0)

个人而言,我认为你应该选择一个名字并坚持下去。几个星期后,当你回去阅读你的代码时,你会想到你在想什么。如果您不喜欢在使用方法或类后选择的名称,那么大多数IDE都会提供一些重构功能,您应该可以使用它来快速,完整,正确地进行更改,或多或少地轻松实现。如果您使用相同的变量来执行多个不同的目的,那么您应该使用更多的变量,每个变量用于这些不同的目的。