函数返回nullptr而没有返回

时间:2014-12-09 17:19:50

标签: c++ c++11 atomic

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(); }
 };

1 个答案:

答案 0 :(得分:4)

这不是一个函数,而是一个带有非静态数据成员初始化程序的成员声明

atomic<ListItem*> next{nullptr};

在未初始化next的构造函数中,next将自动使用nullptr进行初始化。初始化是通过list-initialization完成的,这是在C ++ 11中引入的(与非静态数据成员初始化器一起 - 后者部分依赖于前者)。

GCC 4.7.x should support this