DCPC -- コピー コンストラクタの定義(Define Copy Constructor)

提供: RAD Studio
移動先: 案内検索

C++ 検査 への移動


説明

DCPC では、デフォルトのコピー コンストラクタが使用された場合、それを検出します。

コピー コンストラクタは、オブジェクトが値渡しされたときや、オブジェクトがメソッドから返されたときに呼び出されます。 ユーザーがコピー コンストラクタを定義していない場合には、コンパイラがデフォルトのコピー コンストラクタを作成しますが、そこではオブジェクトのビットコピーが行われます。

誤った例

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

正しい例

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

関連項目