2013-09-16 3 views

ответ

9
A b(); 

не определяет объект, он объявляет функцию, которая возвращает тип A, Он также хорошо известен как most vexing parse.

+0

+1; знал, что имеет техническое имя – Bathsheba

2
A b(); // Case2: Calling implicit default constructor 

Комментарий является неправильно. A b(); - это объявление функции (функция называется b и возвращает объект типа A, и вы намерены определить функцию позже) не определение объекта.

+0

Это неверно. Это просто не то, что он думал. – EJP

+1

@EJP: комментарий неправильный. Неправильные комментарии хуже, чем комментарии. Я исправил свой ответ. – Bathsheba

+0

Согласен, но это не то, что вы сказали первоначально, то есть то, что я прокомментировал. – EJP

0

Случай 1:

A a; // Case1: calling explicit Default constructor 

Вызывает неявный конструктор по умолчанию, так как вы не представили один в классе.

Случай 2:

A b(); // Case2: Calling implicit default constructor 

Это функция decleration сказать «б» это имя функции и не принимает аргументов и возвращает объект.

Надеюсь, это поможет.

Смежные вопросы