Konnte mir jemand den Grund erklären, warum in diesem Code MyClass (const MyClass & src) { m_X = src . m_X; }
definiert ist? Ohne diese Codezeile funktioniert es auch gut und gibt die gleiche Ausgabe, die in diesem Fall 32
ist. Was ist der Unterschied zwischen dem Einsteigen und nicht? Ich habe gelesen, dass der Kopierkonstruktor automatisch erstellt wird, aber wenn Sie den Zeiger in der Klasse definiert haben, sollten Sie ihn definieren, aber ich bekomme in diesem Fall nicht den Grund.Kopieren Konstruktor Verwirrung
-Code unten:
#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;
}