Default-Konstruktor/Destruktor von außerhalb der Klasse?

Ist folgende rechtliche nach dem standard C++11 (= default außerhalb der definition der Klasse) ?

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

//In cpp file
Test::Test() = default;
Test::~Test() = default;
  • Das ist in Ordnung, der standard selbst verwendet es in einem Beispiel (§8.4.2/3). = default und = delete sind nur "normale" Funktion stellen (wie pro-spec sowieso), also das, was du schreiben würdest, in eine definition.
  • Beachten Sie, dass eine VORGEGEBENE definition kann angezeigt werden, nachdem die erste Deklaration der Funktion, während eine gelöschte definition muss die erste Deklaration der Funktion.
  • Klingt wie eine Antwort.
  • Beachten Sie, dass ein Konstruktor, der Verzug ist auf diese Weise, wird noch eine vom Benutzer bereitgestellte Konstruktor. Als Ergebnis, Ihrer Klasse Test ist nicht eine triviale Klasse. Siehe stackoverflow.com/a/7169675/396551
InformationsquelleAutor Vincent | 2013-01-10
Schreibe einen Kommentar