Почему нет вызова конструктору?

Этот код не ведет себя так, как я ожидаю.

#include using namespace std; class Class { Class() { cout<<"default constructor called"; } ~Class() { cout<<"destrutor called"; } }; int main() { Class object(); } 

Я ожидал, что вызывается «конструктор по умолчанию», но я ничего не видел в качестве вывода. В чем проблема?

Неа. Ваша строка Class object(); Объявлена ​​функция. То, что вы хотите написать, – Class object;

Попробуйте.

Вы также можете быть заинтересованы в наиболее неприятном анализе (как отмечали другие). Отличным примером является пункт « Эффективный STL» 6 на стр. 33. (В 12-й печати, сентябрь 2009 г.) В частности, пример в верхней части страницы 35 – это то, что вы сделали, и объясняет, почему парсер обрабатывает его как объявление функции.

Нет вызова конструктора

Потому что конструктор никогда не называется фактически.

Class object(); интерпретируется как объявление object функции, не принимающего аргумента и возвращающего объект Class [по значению]

Попробуйте Class object;

EDIT :

Майк заметил, что это не совсем тот же код, что и то, что вы кормили компилятором. Является ли конструктор / деструктор public или является Class struct?

Однако google для C ++ наиболее неприятный синтаксический анализ.

Вы можете использовать его следующим образом:

 Class obj; //or Class *obj = new Class(/*constructor arguments*/); 
  • @ViewScoped вызывает @PostConstruct при каждом запросе обратной передачи
  • конструктор в качестве делегата - возможно ли это на C #?
  • избегая скуки факультативных параметров
  • Может ли абстрактный class иметь конструктор?
  • Как получить имена параметров конструкторов объекта (reflection)?
  • Что означает явное ключевое слово?
  • Почему это () и super () должны быть первым утверждением в конструкторе?
  • Как передать указатель функции, указывающий на конструктор?
  • Что такое нетривиальный конструктор в C ++?
  • Почему абстрактные classы в Java имеют конструкторы?
  • Почему конструктор копирования не вызывается в этом случае?
  • Давайте будем гением компьютера.