我想知道在构造函数中初始化变量时的生命周期
I want to know the life cycle when initializing a variable in the constructor
A(const atomic<bool>& cancel = atomic<bool>(true))
: cancel_(cancel)
{}
在构造函数"cancel_"是"真"还是"假"或去混杂之后? (取消是去混蛋,因为痘痘的生命周期已经完成。
我想知道
atomic<bool>(true)
的生命周期编译器之间可以有所不同吗?
#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 并不意味着崩溃;这意味着任何事情都可能发生。
相关文章:
- 如何在共享库的整个生命周期内存储数据
- 如何理解句子的生命周期始于对e的评估
- 它解决了什么问题,对于非真空初始化,生命周期在初始化之前就开始了
- Go/C++gRPC客户端通道和存根生命周期
- 如何将"this"的生命周期移动到C++中的另一个对象中?
- 是否可以通过使用移动/交换 c++11 来延长返回的临时变量的生命周期
- 使用对象的生命周期作为设置器的安全性
- 临时人员的生命周期传递给函数
- 我想知道在构造函数中初始化变量时的生命周期
- Lua 用户数据生命周期管理
- 如何使用 epoll(void* event.data.ptr) 管理 Connection 的生命周期
- C++引用的生命周期
- 在堆栈上有一个对象,而不是在函数的整个生命周期内
- 在 Boost ASIO 服务器中处理生命周期
- C++ lambda 生命周期
- 使用互斥锁跟踪另一个应用的生命周期
- QSharedPointer 或 std::shared_ptr 的生命周期
- 来自async_resolve的 boost::asio::ip::tcp::resolver::iterator 的生命周期是多久?
- 如何调整属于类的唯一指针的字符数组的大小.它必须在程序的整个生命周期中保持活力
- 延长 std::tuple<int&,int> 的生命周期,方法是将其分配给 const std::tuple<int, int>&