Duplicar posible:
Why is it an error to use an empty set of brackets to call a constructor with no arguments?Crear una instancia de clase con o sin paréntesis?
#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 impresiones "A", por supuesto.
Pero parece que no pasa nada en t2(), pero el código funciona bien.
Entonces, ¿usamos esos paréntesis sin argumento? ¿O por qué podemos usarlo de esta manera?
Es [el análisis más irritante] (http://en.wikipedia.org/wiki/Most_vexing_parse) en C++ –
@PeterWood: Personalmente, lo discuto. Históricamente, el "análisis más irritante" se refería solo a los casos en que la ambigüedad se produce con un inicializador que es un valor inicializado temporal, p. 'CTest t2 (CTest());' en lugar de este caso más simple. –
@CharlesBailey 'relacionado con el análisis más irritante' hubiera sido una mejor manera de expresarlo. Gracias. –