DCPC -- Définir le constructeur de copie

De RAD Studio
Aller à : navigation, rechercher

Remonter à Audits C++


Description

DCPC détecte l'utilisation du constructeur de copie par défaut.

Le constructeur de copie est appelé quand un objet est transmis par valeur ou quand un objet est renvoyé depuis une méthode. Si un utilisateur ne définit pas un constructeur de copie, le compilateur crée un constructeur de copie par défaut qui copie les objets en utilisant bitcopy.

Incorrect

 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;
 }

Correct

 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--;
   };
 };

Voir aussi