Когда называется конструктор?

В каком из следующих конструкторов myClass называется?

1.  myClass class1;
2.  myClass* class1;
3.  myClass* class1 = new myClass;

Спасибо большое

Ответы

Ответ 1

  • Да - конструктор по умолчанию, экземпляр, созданный в стеке
  • Нет
  • Да - конструктор по умолчанию, экземпляр, созданный в куче

Ответ 2

В обоих # 1 и # 3, поскольку вы на самом деле делаете экземпляр объекта. В # 2 вы просто объявляете указатель, который не указывает на экземпляр.

Ответ 3

  • Операция будет инициализировать объект в стеке, вызовите c'tor.
  • Определяет только переменную-указатель в стеке, никакой конструктор не вызывается.
  • Новый оператор создаст объект в свободном хранилище (обычно кучу) и вызовет c'tor.

Но этот код не будет создавать экземпляр какого-либо объекта, поскольку он не компилируется.;-) Попробуйте следующее:

myClass class1; 
myClass* class2;
myClass* class3 = new myClass; 
  • класс 1 - это локальная переменная (в стеке), вызываемый конструктором.
  • класс 2 - это указатель, не вызываемый конструктор.
  • класс 3 - это указатель, вызывающий конструктор, когда выполняется новый.

Ответ 4

1 и 3, потому что в них вы создаете объект myClass.

Ответ 5

Конструктор вызывается в случаях 1 и 3 при создании экземпляра класса. Другой (2) объявляет только указатель.