gpt4 book ai didi

c++ - 没有名字的变量的销毁顺序

转载 作者:太空宇宙 更新时间:2023-11-04 14:49:16 24 4
gpt4 key购买 nike

有人可以解释为什么 bar 的行为与以下代码示例中的 foo 不同吗?

#include <iostream>
using namespace std;

struct A {
A() { cout << "A"; }
~A() { cout << "B"; }
};

void foo() {
A a{};
cout << "X";
}

void bar() {
A {};
cout << "X";
}

int main() {
foo();
cout << endl;
bar();
cout << endl;
}

输出(gcc 4.8.1,Ubuntu 13.10,使用 --std=c++11 编译):

AXB
ABX

最佳答案

所有变量都有名字。

bar() 中,A{} 没有声明变量。 A{} 是构造临时 A 对象的表达式。与所有生命周期未被延长的临时对象一样,此 A 对象在构造它的完整表达式求值结束时被销毁(非正式地,这意味着“在 ;").

关于c++ - 没有名字的变量的销毁顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20388579/

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