Возможный дубликат:
Ярлык для конструктора
Являются ли следующие части кода одинаковыми в C ++:
Piece1:
MyFunnyClass o = MyFunnyClass();
Piece2:
MyFunnyClass o;
Я знаю, что следующее не эквивалентно, но я не уверен насчет двух сверху:
MyFunnyClass o = MyFunnyClass () ;
MyFunnyClass o;
o = MyFunnyClass();
MyFunnyClass o () ;
Это никак не определяет объект. Это Most Vexing Parse. o
это функция, которая ничего не берет и возвращает MyFunnyClass
, который вы заявили.
Настоящий синтаксис будет
MyFunnyClass o;
Это создаст объект по умолчанию.
MyFunnyClass o = MyFunnyClass();
Value-конструирует объект, а затем копирует или перемещает его в o
, Ожидать вознесения здесь.
Других решений пока нет …