using namespace std;
class C {
public:
char *s;
C(const char *s0) {
s = new char[strlen(s0)+1];
strcpy(s,s0);
}
C(C &c) {
s = new char[strlen(c.s)+1];
strcpy(s,c.s);
}
};
int main(int argc, char* argv[]) {
C c("cde");
C c0(c);
cout << c.s << endl;
cout << c0.s << endl;
c.s[1] = 'X';
cout << c.s << endl;
cout << c0.s << endl;
}
Ich bin nicht so sicher, was mit den Zeigern und Referenzen passiert. Kann jemand erklären, warum die Ausgabe für die zweite c0.s immer noch "cde" ist? Vielen Dank.C++ Kopierkonstruktor, kann jemand erklären warum?
Was Sie erwarten sind 'c0.s' zu sein? Und warum? –
Weil es eine * Kopie * macht? – juanchopanza
'c0' ist eine Kopie, also ändert' c' es nicht. – Galik