我注意到,至少从表面上看,最后一行代码似乎是等价的:
std::atomic<int*> a;
a.store(new int{11});
std::cout << *a.load() << "\n";
std::cout << *a << "\n";看来,存储在指针上的原子包装器中的值可以通过直接调用dereference操作符或加载指针,然后调用操作符来访问。
这两者有什么区别吗?dereference操作符的使用是否隐式地调用load()?
发布于 2017-05-20 02:26:13
a对其进行operator int*()调用,然后将间接运算符应用于指针。转换函数与调用load相同,因此它们几乎相同。
唯一的区别是,如果类型是用户定义的,因为它会消耗一个用户定义的隐式转换。
https://stackoverflow.com/questions/44081195
复制相似问题