моя контактная информация
Почтамезофия@protonmail.com
2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
(1) Автоматический выбор типа
автоматически автоматически определяет тип переменной
auto не представляет реальный тип, это просто заполнитель для объявления типа.
Auto не всесилен и может быть выведен в любом сценарии. Переменные, объявленные с использованием auto, должны быть инициализированы, чтобы позволить компилятору определить их фактический тип и преобразовать auto в фактический тип во время компиляции.
Если переменная не является указателем или ссылкой, результат деривации не сохранит ключевые слова const и voluty; если переменная является указателем или ссылкой, результат деривации сохранит ключевые слова const и voluty.
Сценарии, в которых нельзя использовать auto:
1.auto нельзя использовать в качестве параметра функции, поскольку использование auto в качестве формального параметра эквивалентно отказу от инициализации переменной, а auto нельзя экспортировать;
2. Его нельзя использовать для инициализации нестатических переменных-членов класса, поскольку нестатические переменные-члены принадлежат объектам, а тип объекта неизвестен до тех пор, пока он не будет создан;
3. Вы не можете использовать ключевое слово auto для определения массива;
4. Авто нельзя использовать для получения параметров шаблона;
Рекомендуемые сценарии использования авто:
1. Используется для обхода STL-контейнеров;
2. Используется для общего программирования;
(2) получение типа decltype
Иногда вам не нужно или вы не можете определять переменные, но хотите получить определенный тип. Вы можете использовать decltype, чтобы определить тип выражения во время компиляции, например: int x=18; ;То есть определить тип от a до x
Правила вывода:
1. Выражение является обычной переменной, обычным выражением или выражением класса времени, а тип, полученный с помощью decltype, соответствует типу выражения;
2. Выражение является функцией, а тип, полученный с помощью decltype, соответствует возвращаемому значению функции (если возвращаемое значение изменяется с помощью константных, изменчивых квалификаторов, квалификаторы игнорируются);
3. Выражение представляет собой lvalue или заключено в (), а decltype используется для вывода ссылки на тип выражения (если возвращаемое значение изменяется с помощью константных или изменчивых квалификаторов, квалификаторы игнорируются);
Сценарии применения decltype:
1. Чаще всего используется в обобщенном программировании, поскольку в обобщенном программировании имеется большое количество неопределенных типов;
Final используется для ограничения наследования определенного класса или переопределения определенной виртуальной функции.
Когда Final изменяет функцию, вы можете изменять только виртуальные функции, а ключевое слово Final должно быть помещено после класса или функции. Когда виртуальная функция изменяется с помощью Final, это может помешать подклассу переопределить виртуальную функцию родительского класса.
Когда Final изменяет класс, напишите Final после имени класса, указывая, что этот класс больше не может быть унаследован, то есть у этого класса больше нет производных классов.
Ранняя роль: используется для объявления пространств имен. Использование пространств имен может предотвратить конфликты имен подклассов пользователей, вызывающих методы с тем же именем, что и у скрытого родительского класса;
Новая функция: определение псевдонима типа. Обратите внимание, что использование на самом деле дает только псевдоним исходному типу, а не определяет новый тип. Как использовать: использование нового типа = старый тип, например: использование my_int = int;
Использование использования вместо typedef для определения указателей на функции упрощает чтение кода. Раньше typedef использовался для определения указателей на функции, например: typedef int (.func)(int, string);Вместо этого используйте определение: using func = int()(целое, строка);
Используя можно указать псевдонимы для шаблонов, но typedef не может.
Ранние компиляторы C интерпретировали две прямоугольные скобки как операторы сдвига вправо.
Среди новых функций были улучшены правила синтаксического анализа компилятора, позволяющие максимально эффективно анализировать несколько прямых угловых скобок в терминаторы параметров шаблона.
Переопределение используется для того, чтобы гарантировать, что функция, подлежащая переопределению в производном классе, имеет ту же сигнатуру, что и соответствующая виртуальная функция базового класса, а также четко указывает, что функция базового класса будет переопределена.
Override пишется после функции, явно указывая, что функция переопределена, и компилятор проверит тип функции и виртуальную функцию родительского класса.
Запишите тип возвращаемого значения функции после тела объявления функции, auto func (параметр 1, параметр 2,...) –