«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Есть ли встроенные типы C ++ действительно конструкторы по умолчанию?

Есть ли встроенные типы C ++ действительно конструкторы по умолчанию?

Опубликовано в 2025-04-17
Просматривать:538

Do C   Built-in Types Really Have Default Constructors?

do встроенных типов имеют конструкторы по умолчанию в C?

, несмотря на утверждение в TC PL, что встроенные типы имеют конструкторы по умолчанию, ответ в контексте C-03 является ограниченным "no."

Daseing

встроенные типы не объявляют конструкторы в традиционном смысле. Тем не менее, они могут быть инициализированы с помощью синтаксиса, который напоминает вызовы конструктора. Эта инициализация появляется как:

int x0(5); // Looks like a default constructor
int x1{5}; // New syntax for default initialization

. Хотя эти выражения имитируют вызовы конструктора, они фактически вызывают инициализацию значения. Инициализация значения-это механизм, который инициализирует примитивные типы к значениям по умолчанию, определяемым по их типу.

последствия синтаксиса инициализации

, хотя встроенные типы отсутствуют явные конструкторы, синтаксис инициализации создает иллюзию конструкторов дефолта. Это особенно очевидно с новым синтаксисом для нулевой инициализации:

int z0 = int(); // Appears like a default constructor
int z1 = int{}; // New syntax for zero-initialization

эти выражения ведут себя аналогично конструкторам по умолчанию, инициализации переменных к их значению по умолчанию (в данном случае, 0).

Bjarne Cruestionsh Stroustrup пояснил, что, хотя встроенные типы не имеют конструкторов в обычном смысле, они концептуально считаются конструкторами, основанными на их поведении инициализации.

Заключение

в C 03, встроенные типы технически не обладают конструкторами по умолчанию. Тем не менее, их синтаксис инициализации создает иллюзию таких конструкторов, позволяя им инициализировать, как если бы они это сделали. Это различие подчеркивает нюанс механизмов инициализации C и гибкость его синтаксиса. ]

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3