Это может показаться немного сумасшедшим, но микроволновая печь служит в качестве микроволнового экрана. Поэтому, помещая устройство в микроволновую печь (НЕ включайте микроволновую печь, пока ваше устройство внутри!) Приведет к значительному снижению уровня сигнала. Он определенно бьет, стоя в лифте ...
POD обозначает Простые Данные - то есть, класс (определенный ли с ключевым словом struct
или ключевым словом class
) без конструкторов, деструкторы и виртуальные участники функционируют. статья Википедии о POD вдается в немного большее количество подробностей и определяет его как:
А Простая Структура данных в C++ является совокупным классом, который содержит только ПЕРЕХОДНЫЕ ПРИСТАВКИ как участников, не имеет никакого пользовательского деструктора, никакого пользовательского оператора присваивания копии и никаких нестатических членов указателя на тип элемента.
Большая деталь может быть найдена в этот ответ для C++ 98/03 . C++ 11 изменил правила окружающий POD, ослабив их значительно, таким образом потребность последующего ответа здесь .
Короче говоря, это - все встроенные типы данных (например, int
, char
, float
, long
, unsigned char
, double
, и т.д.) и все агрегирование данных POD. Да, это - рекурсивное определение.;)
, Чтобы быть более ясным, POD - то, что мы называем "структурой": единица или группа единиц, которые просто хранят данные.
С C++ Простые Данные только означают, что вещами как интервал, символ, и т.д. являются единственные используемые типы. Простые Данные действительно означают на практике, что можно взять структуру memcpy они от одного местоположения в памяти другому, и вещи будут работать точно как Вы, ожидал бы (т.е. не аварийное завершение). Это повреждается, если Ваш класс или какой-либо класс, который содержит Ваш класс, имеет как участник, который является указателем или ссылкой или классом, который имеет виртуальную функцию. По существу, если указатели должны быть включены где-нибудь, не Простые Данные.
POD А является типом (включая классы), где компилятор C++ гарантирует, что не будет никакого "волшебного" продолжения в структуре: например, скрытые указатели на vtables, смещения, к которым относятся адрес, когда это брошено к другим типам (по крайней мере, если POD цели также), конструкторы или деструкторы. Примерно говоря, тип является POD, когда единственными вещами в нем являются встроенные типы и комбинации их. Результат - что-то, что "действует как" тип C.
int
, char
, wchar_t
, bool
, float
, double
ПЕРЕХОДНЫЕ ПРИСТАВКИ, как long/short
и signed/unsigned
версии их. enums
ПЕРЕХОДНЫЕ ПРИСТАВКИ const
или volatile
, POD является POD. class
, struct
или union
из ПЕРЕХОДНЫХ ПРИСТАВОК POD при условии, что все нестатические элементы данных public
, и он не имеет никакого базового класса и никаких конструкторов, деструкторов или виртуальных методов. Статические участники не останавливают что-то являющееся POD по этому правилу. Это правило изменилось в C++ 11, и определенным членам парламента, не занимающим официального поста разрешают: Может класс со всеми членами парламента, не занимающими официального поста быть классом POD? 3.9 (10): "Арифметические типы (3.9.1), перечисляемые типы, типы указателей и указатель на типы элемента (3.9.2) и квалифицированные к условной цене версии этих типов (3.9.3) являются коллективно типами скаляра вызывающей стороны. Скалярные типы, типы структуры POD, объединение POD вводит (пункт 9), массивы таких типов и квалифицированные к условной цене версии этих типов (3.9.3) коллективно называют типами POD"
9 (4): "Структура POD является совокупным классом, который не имеет никаких нестатических элементов данных типа non-POD-struct, non-POD-union (или массив таких типов) или ссылка, и не имеет никакого пользователя - определяют оператор копии и никакой пользовательский деструктор. Так же объединение POD является совокупным объединением, которое не имеет никаких нестатических элементов данных типа non-POD-struct, non-POD-union (или массив таких типов) или ссылка, и не имеет никакого пользователя - определяют оператор копии и никакой пользовательский деструктор.
8.5.1 (1): "Агрегат является массивом или классом (пункт 9) без объявленных пользователями конструкторов (12.1), никакие частные или защищенные нестатические элементы данных (пункт 11), никакие базовые классы (пункт 10) и никакие виртуальные функции (10.3)".