DCPC – Definieren des Kopierkonstruktors

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu C++-Audits


Beschreibung

DCPC ermittelt die Verwendung des Standardkopierkonstruktors.

Der Kopierkonstruktor wird aufgerufen, wenn ein Objekt per Wert übergeben, oder ein Objekt von einer Methode zurückgegeben wird. Wenn der Benutzer keinen Kopierkonstruktor definiert, erstellt der Compiler einen Standardkopierkonstruktor, der die Objekte per Bitkopie kopiert.

Falsch:

 class SomeClass{
   static int instances;
   std::string myName;
 public:
   SomeClass(const string& name = "") : myName(name){
     instances++;
   };
   ~SomeClass(){
      instances--;
   };
 };
 
 int SomeClass::instances = 0;
 
 int main() {
   SomeClass a("One");
   SomeClass b("Two");
   SomeClass c = a;
 }

Richtig:

 class SomeClass{
   static int instances;
   std::string myName;
 public:
   SomeClass(const string& name = "") : myName(name){
     instances++;
   };
   SomeClass(const SomeClass& copy) : myName(copy.myName){
     instances++;
   };
   ~SomeClass(){
      instances--;
   };
 };

Siehe auch