2012-12-13 12 views
5

Przykro mi, jeśli to pytanie zostanie zgłoszone, ale nie mogę łatwo znaleźć rozwiązania w Internecie. Jeśli przesłonię operatora()() jakie zachowanie to określa?Co definiuje operator()()?

+4

To operator połączeń funkcyjnych. Może się okazać, że jest to przydatne: http://stackoverflow.com/questions/4421706/operator-overloading – chris

Odpowiedz

8

operator() jest operatorem wywołania funkcji, tj. Można użyć obiektu odpowiedniego typu jako obiektu funkcji. Drugi zestaw nawiasów zawiera listę argumentów (jak zwykle), która jest pusta. Na przykład:

struct foo { 
    int operator()() { return 17; }; 
}; 

int main() { 
    foo f; 
    return f(); // use object like a function 
} 

Powyższy przykład pokazuje sposób, w jaki operator jest zadeklarowany i wywołany. Realistyczne użycie prawdopodobnie uzyska dostęp do zmiennych członkowskich w operatorze. Obiekt funkcji są używane w wielu miejscach w standardowej bibliotece C++ jako punkty dostosowania. Zaletą używania obiektu, a nie wskaźnika funkcji, jest to, że obiekt funkcji może mieć dołączone do niego dane.

+0

Trudno jest zobaczyć, jak może być użyteczny w twoim przykładzie. – dreamlax

+0

@dreamlax: Dodałem krótki opis, ale po to, aby wyjaśnić, z jakich obiektów funkcji są używane, by szukać w istniejących odpowiedziach. –

+0

+1: Ładne dodane informacje. – dreamlax