por metodos ejemplo dinamico destructores defecto constructores codigo clases c++ c++11 constructor destructor default-constructor

metodos - ejemplo de un constructor en c++



Constructor/destructor por defecto fuera de la clase? (1)

¿Es el siguiente legal de acuerdo con el estándar C ++ 11 ( = default fuera de la definición de la clase)?

// In header file class Test { public: Test(); ~Test(); }; // In cpp file Test::Test() = default; Test::~Test() = default;


Sí, una función de miembro especial puede definirse por defecto fuera de línea en un archivo .cpp. Tenga en cuenta que al hacerlo, algunas de las propiedades de una función predeterminada en línea no se aplicarán a su clase. Por ejemplo, si su constructor de copia está definido por defecto fuera de línea, su clase no se considerará trivialmente copiable (lo que también lo descalifica para que no sea reconocido como POD). Del mismo modo, un destructor fuera de línea definido por defecto descalificará a su tipo de ser trivial (o POD).

Esto puede ser útil si desea tener un constructor de copia no en línea y controlar dónde se define (tal vez para tomar el control de las definiciones de plantilla generadas que requerirá), pero no desea definirlo usted mismo manualmente con una mano lista de inicializador de miembros elaborada, que sería laborioso y podría quedar obsoleto en mantenimiento.