Что это значит под типом POD? Cv-qualification?





POD (обычные старые данные) - это любой тип C++, имеющий эквивалент в C.
Тип с квалификацией cv - это тип, который квалифицируется как константный или изменчивый.
// non cv_qualified
int one;
char *two;
// cv-qualified
const int three;
volatile char * four;
Члены данных типа POD должны быть общедоступными и могут относиться к любым примитивным типам: bool, числовые типы, типы перечисления, типы указателей данных, тип указателя на функцию, а также массивы любого из предыдущих.
struct A //POD
{
int n;
double y;
};
struct B //non-POD
{
private:
int n;
double y;
};
Я думаю, тип POD определяется рекурсивно. Ваше определение не учитывает «или любой другой тип POD».
Я согласен с Аркадием: AFAIK, POD может содержать POD и / или встроенные типы.
POD обозначает тип Обычные старые данные. Обычно это относится к классу, который используется для хранения данных и средств доступа - ничего больше. Также подразумевается, что функция не имеет vtable, что означает отсутствие полиморфных членов класса. Они популярны для легких объектов, где вы не хотите платить накладные расходы на полиморфный класс.
CV-квалифицированный. C = постоянный, V = летучий.
Или указатели, если на то пошло. В основном все неклассовые типы тоже являются POD IIRC.
Очень хорошая статья на POD
what things in c++ that makes c++ type non equivalent to c – rajKumar
Как сказано в CMS, тип POD - это тип C++, который имеет эквивалент в C: поэтому он должен следовать тем же правилам, которые C использует для:
Тип C++ должен иметь какой-либо конструктор нет, должен нет перегружать оператор присваивания, должен нет иметь виртуальные функции, базовые классы, деструктор, а также нестатические члены, которые являются частными или защищенными.
какие вещи в C++, которые делают тип C++ не эквивалентным c