Lokalne tworzenie obiektów

2013-01-18 10:17
dziadekMroz
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?

Pozostało 580 znaków

2013-01-18 10:26
0

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

Pozostało 580 znaków

2013-01-18 10:38
dziadekMroz
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;
}

Pozostało 580 znaków

2013-01-18 11:01
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;
edytowany 2x, ostatnio: Azarien, 2013-01-18 11:03

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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