Lokalne tworzenie obiektów

0
 
class Foo
{
public: 
    Foo()
   {

   }
}

int main()
{
    Foo a;
    Foo b(); // ?????????????
    return 0;
}

Dawno nie pisałem w cpp i nie mam pojęcia co robi linijka opatrzona komentarzem, mógłby ktoś pomóc?
Coś jest tworzone, ale na pewno nie obiekt klasy Foo ... jakiś upośledzony wskaźnik na funkcje?

0

Też dawno nie pisałem w C++ ,ale wygląda to jak jawne wołanie konstruktora bezparametrowego.

0

No problem w tym że to nie jest wywołanie konstruktora domyślnego, wygląda na to że jest to deklaracja funkcji?

 
#include <iostream>

class Foo
{
public: 
    Foo()
   {
 
   }
};
 
int main()
{
    Foo a;
    Foo b(); 
	Foo (*c)(); 

	c = b;  // OK!!!
	b = c;  // Error	1	error C2659: '=' : function as left operand	
	a = b;  // Error	2	error C2679: binary '=' : no operator found which takes a right-hand operand of type 'Foo (__cdecl *)(void)' (or there is no acceptable conversion)


    return 0;
}
 
0

wygląda na to że jest to deklaracja funkcji?
Tak.

Jeśli chcemy wywołanie konstruktora bezparametrowego, to składnia bez nawiasu:

Foo a;

podobnie zresztą, jak

int i;

1 użytkowników online, w tym zalogowanych: 0, gości: 1