Czy jest jakaś różnica między `List x;` a `List x ()`
Tytuł pochodzi ze słynnej stronyC ++ FAQ przez Marshall Cline.
Autor twierdzi, że istnieje różnica między dwoma poniższymi przykładami kodu.
Załóżmy, że lista jest nazwą jakiejś klasy. Następnie funkcja f () deklaruje obiekt listy lokalnej o nazwie x:
void f()
{
List x; // Local object named x (of class List)
...
}
Ale funkcja g () deklaruje funkcję o nazwie x (), która zwraca listę:
void g()
{
List x(); // Function named x (that returns a List)
...
}
Ale czy naprawdę jest źle używać drugiego wariantu?
A jeśli to naprawdę jest deklaracja, to czy kompilator nie narzeka, że nie można zadeklarować funkcji w funkcji?