![]() |
1
6
对。我不会称之为财产思想。但基本上是的。
变量有三种类型。每种类型在生命周期方面都有不同的属性。
注意:自动存储持续时间对象具有绑定到变量范围的生存期。
除非绑定到变量,否则将在表达式的末尾销毁临时变量。如果它们被绑定到一个变量(一个常量引用),那么它们与该变量具有相同的寿命。有时将其称为范围更容易,但从技术上讲,您是正确的。
技术上是的。但我认为这只是让谈论更容易。对我来说(尽管技术上不正确),临时(非绑定)的范围是表达式。这比临时变量的寿命更容易说。
对。但是讨论范围仍然感觉更自然(即使它在技术上不正确)。因为大多数人都明白你的意思。但是,当你下来谈论非常技术性的东西时,你应该使用正确的术语,在这个上下文中的范围是不正确的。 |
![]() |
2
4
临时术语的使用寿命与句法块几乎没有关系,但是“范围”作为一个词而不是一个技术术语可以用在其他方面。重要的问题是,当人们使用“范围”来指代临时物品时,你是否感到困惑。(从我的视角看,你似乎不是。) 既然你在谈论用这个词与他人交流,那么交流才是真正重要的。如果您是通过编写标准文档来定义术语,或者试图在定义术语的上下文中解释此类文档,那么情况会有所不同。当然,解释ISO 14882会涉及到与他人的沟通,因此在这种情况下,如果必要的话,你只需要要求澄清。 使所有非标准化的通信都成为标准化的通信是有反作用的,而且在 任何一个 要求高精度时的情况。C++标准为此广泛使用实例。 例如,经常使用“调用构造函数”,但从技术上讲,您不能直接调用ctor;相反,ctors是对象初始化的一部分。这就是为什么有一个新的显式形式只用于构造一个对象。(有趣的是,您可以直接调用析构函数。)不过,我希望在大多数上下文中都能理解这个短语,尽管我不主张在标准上下文中使用它。 |
![]() |
3
1
我见过有人说,“一个物体超出了范围”,意思是(用你的话说)“当这个物体的名字超出范围时,它的生命就结束了”。如果您使用这种简短的形式,很自然地会说Temporay对象也超出了范围。 |
![]() |
4
0
临时对象确实有名称,尽管只能由编译器引用。否则编译器将如何引用它们?只是因为一旦临时对象被实例化后就不能引用它,并不意味着编译器不能引用它。
编译器必须至少引用其中一个临时变量,即使您作为程序员不能引用其中任何一个。临时对象没有作用域。 |
![]() |
5
0
绑定到常量引用会将临时引用的生存期延长到引用的生存期,因此在某种意义上,它 做 在这种特殊情况下与范围有关:
见 this article 从药草提取物:
|
![]() |
Tor · 使用Box<None>值初始化struct 3 年前 |
![]() |
Judy · 在两个JavaScript函数中更新全局变量 3 年前 |
![]() |
ask_me · Python中关于局部和全局范围的概念性问题 3 年前 |
![]() |
Astha Gupta · 闭包中的词汇作用域是如何发生的?[重复] 3 年前 |
![]() |
Empha · 从成员函数对对象所做的更改不会持续。范围/参考问题? 7 年前 |
![]() |
pag-r · Golang开关变量范围 7 年前 |
![]() |
yurnero · MATLAB:“加载”一个快速访问功能 7 年前 |