为什么实体可以在内部范围内重用?C++



我想知道为什么可以在内部范围内重用实体?就像我在作用域内声明变量 x 一样,我可以在内部作用域中创建另一个完全相同的变量。计算机是否删除外部实体的内存,然后将其替换为内部实体?或者会发生什么?为什么还要有这个机会呢?它有什么好处?它只会让我感到困惑

谢谢!我希望它解释得足够好

更新: 通过"实体",我想我的意思是标识符。 让我感到困惑的一个例子:

int main()
{
int x = 22;
int y = 33;
{
int x;
x = 44; //now it is another variable 
y = 55; //now y (outer scope) is changed
}
}

整个计算机并不十分关心你的变量和作用域。 您可能的意思是说"编译器"。

不,编译器不会"删除外部实体的内存并将其替换为内部实体"。 编译器在外部作用域中为您的x分配一个内存区域,在内部作用域中为您的x分配另一个内存区域,并且简单地知道,当您在外部作用域中时,x是指内存的第一个区域,而当您在内部作用域中时,x是指记忆的第二个区域。 所以,这一切都非常有效。

当这种情况发生时,我们说内x"阴影"了外x. (有时您可能还会听到它被称为"面具"。

當然,當你的內在範圍終止時,x再次指的是記憶的第一個區域,所以沒有任何東西被移除。

对于这是否有用和有益,或者是否应该避免,意见不一。 我相信这是有用和有益的,因为您对阴影所做的是,您说"名称x现在代表的实体与它在外部作用域中代表的实体不同",因此可以防止您意外访问外部范围的实体内部范围。代码必须选择的变量越少越好。

最新更新