我在理解变量生存期和绑定生存期的概念时遇到问题。
考虑以下任意函数
可变寿命
生存期是对象/变量为其分配内存的持续时间。
绑定寿命。
从创建到破坏的时间段
名称到对象绑定的时间称为绑定的生存期。
通过考虑以下任意函数。我将把我的问题作为评论
void foo (int j)
{ // Does i's lifetime start here?
int i; // Or does i's lifetime start her?
i = j; // does binding lifetime start here?
} // i's lifetime ends
-换句话说,我的一生是否以块“ {}”开始和结束,还是以微分(int i;)开始并以“}”结束。
最佳答案
变量/对象的生存期和绑定时间有时可以相同。例如,当变量/对象通过引用传递给子例程时,通常会看到差异。变量/对象仍然保留其值,但是您不能再通过名称访问它。换句话说,参数名和传递的变量之间的时间比变量本身的生存期短。
01 void addOne(int &y) // y created here
02 {
03 y = y + 1;
04 } // y is destroyed here
05
06 int main()
07 {
08 int x = 5;
09 std::cout << "x = " << x << '\n';
10 addOne(x);
11 std::cout << "x = " << x << '\n'; //y's value is displayed here
12 return 0;
13 }
结果:x = 5 x = 6
y的生存期可变,包括main()和addone(),但是y的生存期在01和04行之间。
关于c++ - C++了解变量生存期和绑定(bind)生存期之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35949849/