Может ли кто-нибудь объяснить мне причину, почему в этом коде определены 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;
}