2014-12-09 6 views
1

В течение перегрузки Jouranl в этом месяце я нашел статью о том, как создать шаблон Observer с C++ 11. Вы найдете его here. Чтение интересно, но я нашел фрагмент кода, используя std::atomic. Я действительно не понимаю.Функция возвращает nullptr без возврата

В чем смысл функции next? Это даже не кажется объявлением функции (нет ключевого слова return). Я использую g++ 4.7.2

#include <iostream> 
#include <cstddef> 
#include <atomic> 

struct ListItem { 
ListItem() {} 
... 
atomic<ListItem*> next{nullptr}; 
~ListItem() { delete next.load(); } 
}; 

ответ

4

То есть не функция, а заявление члена с инициализатором члена нестатических данных.

atomic<ListItem*> next{nullptr}; 

В конструктор, который не инициализирует next, next будет автоматически инициализируется nullptr. Инициализация выполняется через list-initialization, который был введен в C++ 11 (вместе с инициализаторами нестатических данных), последний частично зависит от первого).

GCC 4.7.x should support this.

+0

Для преимущества OP: В частности, он использует новый синтаксис инициализации C++ 11 * universal, который использует скобки ('{}') вместо parens. – cdhowie

+0

@cdhowie В любом случае он не может использовать круглые скобки. – Columbo

+0

Я знаю, но это не главное. OP не может быть знаком с этим новым синтаксисом C++ 11, поэтому я помещаю в него имя. – cdhowie

Смежные вопросы