当使用来自 std::atomic 的方法时隐式调用 load() 吗?

Is load() called implicitly when using a method from an std::atomic?

本文关键字:调用 load 方法 std atomic      更新时间:2023-10-16

我注意到,至少从表面上看,最后几行代码似乎是等效的:

std::atomic<int*> a;
a.store(new int{11});
std::cout << *a.load() << "n";
std::cout << *a << "n";

似乎可以通过直接调用取消引用运算符或通过加载指针然后调用运算符来访问存储在指针上的原子包装器中的值。

两者之间有区别吗?取消引用运算符的使用是否隐式调用 load(( ?

a operator int*()调用它,然后将间接寻址运算符应用于指针。转换函数与调用load相同,因此它们几乎相同。

唯一的区别是类型是用户定义的,因为它会使用一个用户定义的隐式转换。