DCPC -- コピー コンストラクタの定義(Default 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--;
    };
  };

関連項目