Разбор понятий: trivial type, standard layout, POD

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Автор: Виталий Бутурлин

Содержание:

  • 1. Trivial class

  • 2. Standard layout

  • 3. POD

  • 4. Дополнительно

Trivial class

Тривиальные классы (trivial class) - это классы или структуры, в которых специальные функции-члены предоставляются компилятором (явно отсутствует реализация) либо явно заданы как default. В таком классе нет управляющего кода, так как специальные функции-члены обьявлены (явно или неявно) тривиальными по умолчанию.

Кроме того есть дополнительные требования, тривиальный класс не должен иметь:

  • виртуальных функций

  • нетривиальных базовых классов

  • нетривиальных типов данных

Под словом "тривиальный" понимается наличие:

  • тривиальных специальных функций-членов (msdn)

  • POD членов (см. ниже)

Тривиальные классы могут быть безопасно скопированы функциями типа memcpy в полной точности.

Тривиальность функций членов (отсутсвие управляющего кода) подразумевает:

  • выделение памяти под обьект без инициализации

  • побайтовое копирование обьекта

  • освобождение памяти без очистки

Standard layout

Стандартная структура (standard layout) - это структура (struct), которая не содержит специальных возможностей C++:

  • виртуальные функции и виртуальные базовые классы

  • несколько уровней доступа (private, protected)

  • нестатические члены ссылочного типа

Стандартная структура:

  • не имеет члены являющиеся нестандартной структурой

  • не имеет базовые классы не являющиеся нестандартной структурой

  • не имеет более одного базового класса с нестатическими членами данных

  • не имеет двух мест обьявления нестатических членов (например в базовом классе и у себя)

  • не имеет более двух базовых (или косвенно) классов

Стандартная структура имеет предсказуемое устройство памяти, так как не содержит данных, которые компилятор мог бы структурировать по своему усмотрению (например в случае наличия public/private/protected) - как написано так и храниться в памяти.

Автор: Виталий Бутурлин

Источник: https://byurrer.ru/konspektyi/razbor-ponyatij-trivial-standard-layout-pod.html

Источник: https://habr.com/ru/post/532972/


Интересные статьи

Интересные статьи

Привет, Хабр! Меня зовут Иван Вахмянин, и сегодня я хочу рассказать о том, что находится “под капотом” у современной BI-системы, от чего зависит ее производительность (и как можно её нена...
Компании переполнили рынок товаров и услуг предложениями. Разнообразие наблюдается не только в офлайне, но и в интернете. Достаточно вбить в поисковик любой запрос, чтобы получить подтверждение насыще...
Периодически мне в разных вариантах задают вопрос, который «в среднем» звучит так: «что лучше: заказать интернет-магазин на бесплатной CMS или купить готовое решение на 1С-Битрикс и сделать магазин на...
Изображение: Unsplash В комментариях к нашим публикациям на Хабре читатели часто задают вопросы о том, как защищены (и защищены ли вообще) средства инвесторов при торговле на бирже. Доволь...
Мы публикуем видео с прошедшего мероприятия. Приятного просмотра.