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

Почему `Class object();` не создает объект C++?

Опубликовано 21 декабря 2024 г.
Просматривать:113

Why Doesn't `Class object();` Create a C   Object?

Понимание отсутствия вызова конструктора

В C конструкторы используются для инициализации объектов класса. Однако в предоставленном фрагменте кода конструктор не вызывается, что приводит к неожиданному поведению.

Проблема

Проблемная строка:

Class object();

фактически не вызывает конструктор класса Class. Вместо этого он объявляет функцию, возвращающую объект класса. Чтобы правильно вызвать конструктор и создать объект, к строке необходимо добавить точку с запятой (;):

Class object;

За кулисами: самый неприятный анализ

Первоначальный фрагмент кода подчеркивает проблему, известную как «самый неприятный синтаксический анализ» в C. При обнаружении строки:

Class object();

парсер C неоднозначно интерпретирует ее либо как объявление функции, либо как вызов функции с пустым списком аргументов. Эта двусмысленность часто приводит к путанице и неожиданным результатам.

Исправление кода

Чтобы вызвать конструктор и создать объект, код следует обновить до:

#include 
using namespace std;

class Class {
    Class() {
        cout 

Запустите исправленный код, чтобы увидеть ожидаемый результат:

default constructor called
destructor called
Последний учебник Более>

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

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

Copyright© 2022 湘ICP备2022001581号-3