объявление переменной пользовательского типа
От: cse  
Дата: 04.02.13 05:15
Оценка: :)
Здравствуйте,
Подскажите, как понять такую форму записи:

class A{
    public:
        A():val(78){printf("A()\n");}
    private:
        int val;
};

int main()
{
    A a();
    return 0;
}


Почему конструктор не вызывается? И если можно, подскажите, где в стандарте описывается такая форма объявления переменной пользовательского типа.
компилятор — gcc 4.6.3, OS Linux.
-------------------------
Сергей Ч.
Нижний Новгород
Re: объявление переменной пользовательского типа
От: jazzer Россия Skype: enerjazzer
Дата: 04.02.13 05:27
Оценка: 2 (1)
Здравствуйте, cse, Вы писали:

cse>
cse>    A a();
cse>


cse>Почему конструктор не вызывается?


Потому что это — обявление функции, такое же, как
int f();

Убери скобки, и будет тебе счастье.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: объявление переменной пользовательского типа
От: flаt  
Дата: 11.02.13 10:15
Оценка: -1
Здравствуйте, jazzer, Вы писали:

J>Убери скобки, и будет тебе счастье.

Или добавь, если понадобится передать аргумент:
A a( (79) );

(на будущее).
Re[3]: объявление переменной пользовательского типа
От: wander  
Дата: 13.02.13 10:59
Оценка:
Здравствуйте, flаt, Вы писали:

F>Здравствуйте, jazzer, Вы писали:


J>>Убери скобки, и будет тебе счастье.

F>Или добавь, если понадобится передать аргумент:
F>A a( (79) );

F>(на будущее).


Тут как раз не нужны вторые скобки. Контекст-то другой.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.