DCPC -- Define Copy Constructor

From RAD Studio
Jump to: navigation, search

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

See Also

Retrieved from "https://docwiki.embarcadero.com/RADStudio/Tokyo/e/index.php?title=DCPC_--_Define_Copy_Constructor&oldid=262948"