sientes que pareja malas frases estas decirle decir debes cosas contestaciones como bueno bien c++ class constructor most-vexing-parse

c++ - malas - frases que no debes decirle a tu pareja



¿Por qué no hay llamadas al constructor? (3)

Este código no se comporta como lo espero.

#include<iostream> using namespace std; class Class { Class() { cout<<"default constructor called"; } ~Class() { cout<<"destrutor called"; } }; int main() { Class object(); }

Esperaba que se llamara al ''constructor predeterminado'' de salida, pero no vi nada como salida. ¿Cuál es el problema?


Sin llamada al constructor

Porque el constructor nunca se llama en realidad.

Class object(); se interpreta como la declaración de un object función que no toma ningún argumento y devuelve un objeto de Class [por valor]

Pruebe el Class object;

EDITAR :

Como Mike notó que este no es exactamente el mismo código que lo que estás alimentando al compilador. ¿El constructor / destructor es public o es Class una estructura?

Sin embargo, google para C ++ más irritante análisis.


Puedes usarlo así:

Class obj; //or Class *obj = new Class(/*constructor arguments*/);


Nop. Su línea Class object(); Declarado una función. Lo que quiere escribir es un Class object;

Pruébalo.

También puede estar interesado en el análisis más irritante (como otros han señalado). Un buen ejemplo es en el Artículo 6 de STL vigente en la página 33. (En la 12ª impresión, septiembre de 2009.) Específicamente, el ejemplo que se encuentra en la parte superior de la página 35 es lo que hizo y explica por qué el analizador lo maneja como una declaración de función.