Ho incontrato questa domanda C++:Perché "Fo f (Bar());" può essere una dichiarazione di una funzione che prende tipo Bar e restituisce tipo Foo?
Domanda: la seguente è una definizione o una dichiarazione?
Foo f(Bar());
Risposta: E 'forse sia una dichiarazione di una funzione che prende tipo bar e ritorna tipo Foo o è una definizione di f
come un tipo Foo
, che ha un costruttore che accetta di tipo bar. Il problema è che la sintassi per entrambi è identica, quindi per risolvere questo problema lo standard C++ afferma che un compilatore deve preferire le dichiarazioni di funzioni alle definizioni oggetto dove non è in grado di fare una distinzione.
- Non capisco perché possa essere "una dichiarazione di una funzione che accetta tipo Bar e restituisce tipo Foo"? come mai una parentesi "()" appare nella lista dei parametri?
JFC non questa roba di nuovo –