DCPC -- Define Copy Constructor
Go Up to C++ Audits
Description
DCPC detects using default copy-constructor.
Copy-constructor is called when an object is passed by value or an object is returned from a method. If a user does not define a copy constructor, the compiler will create a default copy-constructor that copies objects using 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--;
};
};