gpt4 book ai didi

C++ 了解变量生命周期和绑定(bind)生命周期之间的区别

转载 作者:行者123 更新时间:2023-11-28 02:10:19 27 4
gpt4 key购买 nike

我在理解变量生命周期和绑定(bind)生命周期的概念时遇到问题。

考虑以下任意函数

可变生命周期

Lifetime is the time duration where an object/variable has memory allocated to it.

绑定(bind)生命周期。

The period of time between the creation and destruction of a name-to-object binding is called the binding’s lifetime.

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

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

-换句话说,i 的生命周期是以 block “{ }”开始和结束,还是以减速 (int i;) 开始并以“}”结束。

最佳答案

变量/对象的生命周期和绑定(bind)时间有时可以相同。例如,当变量/对象通过引用传递到子例程时,您通常会看到差异。变量/对象仍然保留其值,但您不能再通过名称 访问它。换句话说,参数名称和传递的变量之间的时间比变量本身的生命周期更短。

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 }

Results:
x = 5
x = 6

y 有一个可变生命周期,包括 main() 和 addone(),但 y 在第 01 行和第 04 行之间有一个绑定(bind)生命周期。

关于C++ 了解变量生命周期和绑定(bind)生命周期之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35949849/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com