DCPC – Definieren des Kopierkonstruktors
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--;
};
};