Ответ
В C++ система типов фундаментальна и включает как встроенные (fundamental) типы, так и составные (compound), определяемые пользователем.
I. Встроенные (фундаментальные) типы:
-
Целочисленные (integral):
- Со знаком:
signed char,short,int,long,long long. - Без знака:
unsigned char,unsigned short,unsigned int,unsigned long,unsigned long long. char(может быть signed или unsigned, зависит от платформы и компилятора).bool(true/false).char8_t(C++20, для UTF-8),char16_t,char32_t,wchar_t.
- Со знаком:
-
Типы с плавающей точкой (floating-point):
float(обычно 32-bit IEEE-754).double(обычно 64-bit).long double(расширенная точность).
-
Тип
void:- Обозначает отсутствие типа. Используется как возвращаемый тип функций, которые ничего не возвращают, и в указателях на неопределенный тип (
void*).
- Обозначает отсутствие типа. Используется как возвращаемый тип функций, которые ничего не возвращают, и в указателях на неопределенный тип (
-
Тип
std::nullptr_t(C++11):- Тип ключевого слова
nullptr.
- Тип ключевого слова
II. Составные (compound) типы:
- Указатели:
T*,T&(ссылки — безопасные «указатели», которые не могут быть null и требуют инициализации). - Массивы:
T[N]. - Структуры/Классы:
struct,class,union. - Перечисления (enumerations):
enum,enum class(scoped enum, C++11).
III. Умные указатели (библиотечные, но критически важные):
std::unique_ptr<T>— эксклюзивное владение, перемещаемый.std::shared_ptr<T>— разделяемое владение с подсчетом ссылок.std::weak_ptr<T>— слабая ссылка на объект, управляемыйshared_ptr.
Ключевые концепции:
- CV-квалификаторы:
const(неизменяемый) иvolatile. - Модификаторы размера/знака:
signed,unsigned,short,long. - Точные размеры типов не фиксированы стандартом, а задаются соотношениями (например,
sizeof(int) <= sizeof(long)) и определяются ABI платформы. Для точного контроля можно использовать типы фиксированного размера из<cstdint>:int32_t,uint64_tи т.д.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶