DCPC -- Define Copy Constructor
From RAD Studio
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--; }; };