2016-04-15 40 views
-1

是否std::atomic<basic_type>保证basic_type值设定为0/0.0(取适用)时作为一类构件,而不显式地初始化创建:是不是std :: atomic保证像int,float等类型初始化初始化为0/0.0?

  • INT/UINT /短路/ USHORT /等...
  • 和; float/double

例子:

class Foo 
{ 
public: 
    std::atomic<int> bar; 
}; 

int main() 
{ 
    Foo foo; 
    return foo.bar; //foo.bar guaranteed to be 0? 
} 
+0

我假定您已经阅读[精说明书(http://en.cppreference.com/w/cpp /原子/原子/原子),并发现它缺乏。除了静态和线程局部对象的零初始化之外,还有没有其他的初始化发生,你会发现不清楚吗?基本上,'std :: atomic bar'提供了与'int bar'相同的(少数)初始值保证。 –

回答

1

std::atomic default constructor cppreference文档:

默认的构造很简单:没有初始化发生 不是零初始化静态和线程本地对象。 可以使用std :: atomic_init来完成初始化。

因此,在你的情况,你将有同样的保障,如果你已经宣布只是int bar;