On Overload Jouranl本月我发现了一篇关于如何使用C ++ 11设计Observer模式的文章。你会发现它here。阅读很有趣,但我发现使用std::atomic
的一段代码我真的不明白。
下面的函数next
是什么意思?它甚至看起来都不是函数声明(没有return
关键字)。我正在使用g++ 4.7.2
#include <iostream>
#include <cstddef>
#include <atomic>
struct ListItem {
ListItem() {}
...
atomic<ListItem*> next{nullptr};
~ListItem() { delete next.load(); }
};
答案 0 :(得分:4)
这不是一个函数,而是一个带有非静态数据成员初始化程序的成员声明。
atomic<ListItem*> next{nullptr};
在未初始化next
的构造函数中,next
将自动使用nullptr
进行初始化。初始化是通过list-initialization完成的,这是在C ++ 11中引入的(与非静态数据成员初始化器一起 - 后者部分依赖于前者)。
GCC 4.7.x should support this。