C ++ Создание экземпляра класса?

Возможный дубликат:
Конструктор по умолчанию с пустыми скобками
Создать экземпляр класса с или без скобок?

Программа:

class Foo
{
public:
Foo ( int bar = 1 )
{
cout << "bar=" << bar;
}
};

int main() {

cout << "0 - ";
Foo foo_0 ( 0 ) ;
cout << '\n';

cout << "1 - ";
Foo foo_1 ();
cout << '\n';

cout << "2 - ";
Foo foo_4;
cout << '\n';

return 0;

}

Выход:

0 - bar=0
1 -
2 - bar=1

Вопрос: почему пример № 1 не работает, а примеры № 0 и № 2 работают?

0

Решение

Foo foo_1 ();

является объявлением функции, объект не создается. Это функция называется foo_1 который не принимает параметров и возвращает Foo объект.

Правильный способ построить объект есть

Foo foo1;

Эта концепция называется C ++ досадный разбор. Краткое описание состоит в том, что все, что можно рассматривать как декларацию, есть.

7

Другие решения

foo_1 (); другими словами, он известен как Null Intialize, вы должны знать разницу между созданием объекта и инициализацией значения.

-2

По вопросам рекламы [email protected]