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