Русский
Русский
English
Статистика
Реклама

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

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

Содержание:

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

Источник: habr.com
К списку статей
Опубликовано: 14.12.2020 16:17:31
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Javascript

Fermarunet

Java

Pod

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru