Eventuali duplicati:
Why is it an error to use an empty set of brackets to call a constructor with no arguments?Istanzia classe con o senza parentesi?
#include <iostream>
using namespace std;
class CTest
{
int x;
public:
CTest()
{
x = 3;
cout << "A";
}
};
int main() {
CTest t1;
CTest t2();
return 0;
}
CTest t1 stampe "A", naturalmente.
Ma sembra che a t2() non accada nulla, ma il codice funziona bene.
Così usiamo queste parentesi senza argomenti? O perché possiamo usarlo in questo modo?
È [l'analisi più irritante] (http://en.wikipedia.org/wiki/Most_vexing_parse) in C++ –
@PeterWood: Personalmente, lo contesta. Storicamente la "analisi più irritante" si riferisce solo ai casi in cui l'ambiguità si verifica con un inizializzatore che è un valore inizializzato temporaneamente, ad es. 'CTest t2 (CTest());' piuttosto che questo caso più semplice. –
@CharlesBailey "relativo al parsing più irritante" sarebbe stato un modo migliore di metterlo. Grazie. –