任何人都可以解釋爲什麼在此代碼定義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;
}