誰も私になぜこのコードが定義されている理由を説明できませんでしたMyClass (const MyClass & src) { m_X = src . m_X; }
?このコード行がなければ、うまく動作し、この場合は32
という同じ出力が得られます。それを持つこととないことの違いは何ですか?コピーコンストラクタは自動的に作成されますが、クラス内にポインタを定義した場合は、定義する必要がありますが、この場合は理由がわかりません。以下コンストラクタの混乱をコピー
コード:
#include <iostream>
using namespace std;
class MyClass
{
public:
MyClass (int x) : m_X (new int (x)) {}
MyClass (const MyClass &src)
{
m_X = src.m_X;
}
void print (void) const
{
cout << *m_X;
}
private:
int * m_X;
};
int main (void)
{
MyClass a (32), c = a;
c.print();
return 0;
}