Dies ist nur eine kurze Frage richtig zu verstehen, was passiert, wenn man eine Klasse mit einem Konstruktor wie folgt zu erstellen:Compiler erzeugt Konstrukteurs
class A
{
public:
A() {}
};
Ich weiß, dass kein Standard-Konstruktor erzeugt wird, da er bereits definiert ist, aber Kopier- und Zuweisungskonstruktoren, die vom Compiler generiert wurden, oder mit anderen Worten, muss ich einen privaten Kopierkonstruktor und einen privaten Zuweisungsoperator deklarieren, um dies zu verhindern?
class A
{
private:
// needed to prevent automatic generation?
A(const A&);
A& operator=(const A&);
public:
A() {}
};
der Tat, obwohl, wenn Sie diese verwenden Kopieren/Zuordnung zu verhindern, Check-out [boost :: noncopyable] (http: // www .boost.org/doc/libs/1_55_0/libs/Dienstprogramm/Dienstprogramm.htm # Class_noncopyable). (Sie können diese einfache Klasse ausreißen oder Ihre eigene schreiben und sie wiederverwenden, wo immer Sie wollen.) – TypeIA