Супер простой запрос конструктора C++

У меня очень простой вопрос. В чем разница в следующем коде? (См. «Со скобками» и «Без скобок»)

class class_a{
    public:

        int a_int;

        class_a(){
           a_int = 0;
        }
}

int main( ... ){

    class_a instance_a_first; // Without Parentheses
    class_a instance_a_second(); // With Parentheses

}

person FreelanceConsultant    schedule 03.09.2012    source источник
comment
Второй — это объявление функции.   -  person hmjd    schedule 03.09.2012
comment
@JoSo ты ошибаешься. :)   -  person Luchian Grigore    schedule 03.09.2012
comment
@DavidSchwartz Это не самый неприятный разбор, просто функция decl   -  person Mr.Anubis    schedule 03.09.2012
comment
Это не самый неприятный анализ. Это немного более сложный, но родственный случай. Хотя большинство людей, кажется, называют это так в наши дни.   -  person jcoder    schedule 03.09.2012
comment
Я хочу сказать, что если вы понимаете самый неприятный разбор, это будет прогулка в парке.   -  person David Schwartz    schedule 03.09.2012


Ответы (1)


Первый определяет переменную с именем *instance_a_first* типа *class_a*.

Второй объявляет функцию с именем *instance_a_second*, которая возвращает объект *class_a* и не принимает никаких параметров.

Это то же самое, что написать: -

int one;

vs

int func();

редактировать: Изменено второе предложение, чтобы сказать объявляет вместо определяет.

person jcoder    schedule 03.09.2012
comment
Почему мое форматирование для выделения имен курсивом отображается звездочками? - person jcoder; 03.09.2012
comment
видимо из-за подчеркивания - person Oktalist; 03.09.2012
comment
Ах, хорошо, я думаю, это имеет смысл раздражающим образом - person jcoder; 03.09.2012
comment
Второй объявляет функцию; он не определяет его. - person Pete Becker; 03.09.2012
comment
@ Пит Беккер, да, вы правы, я обновлю свой небрежный ответ. - person jcoder; 03.09.2012
comment
Ах да конечно! Спасибо всем. :) Что бы мы делали без сообщества stackoverflow?! - person FreelanceConsultant; 03.09.2012