我在理解变量生存期和绑定生存期的概念时遇到问题。

考虑以下任意函数

可变寿命


  生存期是对象/变量为其分配内存的持续时间。


绑定寿命。


  从创建到破坏的时间段
  名称到对象绑定的时间称为绑定的生存期。


通过考虑以下任意函数。我将把我的问题作为评论

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/

10-11 19:16