#include<iostream> class _ctor { public: _ctor() { std::cout<<"\nCtor";} ~_ctor(){ std::cout<<"\nDtor";} }; _ctor A(); // --> Is the Constructor Really called? I do not see the Output printed //_ctor A; int main(){ return 0; }
Вывод вышеуказанного кода приведен в этой ссылке Я не вижу вызова конструктора, в чем может быть проблема ?? Если это не должно быть вызвано, то что это значит _ctor A();?
_ctor A();
Вы объявили функцию с именем A(), которая возвращает _ctor, и никогда не вызывали эту функцию.Вы никогда не определяли эту функцию.
A()
_ctor
Нет, конструктор _ctor не вызывается.
Нет, потому что вы фактически объявляете функцию, которая не принимает аргументов и возвращает _ctor.Это называется «самый неприятный разбор». Вы, вероятно, хотите это:
_ctor A;
Вы объявляете функцию с именем A, которая возвращает объект класса ctor, поэтому конструктор не вызывается.
A
Если вы хотите создать глобальный объект класса ctor, вы можете сделать:
, который вызывает конструктор.
Чтобы конструктор мог вызывать, программе необходимо создать экземпляр класса _ctor.
Вышеприведенный оператор является прототипом для функции A(), сообщающей, что его тип возвращаемого значения равен * 1006.*.