我想知道在构造函数中初始化变量时的生命周期

I want to know the life cycle when initializing a variable in the constructor

本文关键字:生命 周期 变量 初始化 想知道 构造函数      更新时间:2023-10-16
A(const atomic<bool>& cancel = atomic<bool>(true))
: cancel_(cancel)
{}

在构造函数"cancel_"是"真"还是"假"或去混杂之后? (取消是去混蛋,因为痘痘的生命周期已经完成。

  1. 我想知道atomic<bool>(true)的生命周期

  2. 编译器之间可以有所不同吗?

#include <iostream>
#include <atomic>
using namespace std;
class A {
public:
A(const atomic<bool>& cancel = atomic<bool>(true))
: cancel_(cancel)
{}
void print() {
cout << cancel_.load() << endl;
}
const atomic<bool>& getCancel() const {
return cancel_;
}
private:
const atomic<bool>& cancel_;
};
int main()
{
A a;
a.print();
return 0;
}

输出 : 1

成员变量将在 ctor 的末尾或创建 ctor 的完整表达式的末尾是一个悬空引用; 标准让实现选择。

悬空引用之后是未定义的行为 (UB(。 UB 并不意味着崩溃;这意味着任何事情都可能发生。