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;
}
포인터와 참조에서 어떤 일이 일어나고 있는지 잘 모르겠습니다. 아무도 왜 두 번째 c0.s 출력이 여전히 "cde"인지 설명 할 수 있습니까? 고맙습니다.C++ 복사 생성자는 이유를 설명 할 수 있습니까?
읽어? 그리고 왜? –
* copy *를 작성했기 때문에? – juanchopanza
'c0'는 사본이므로'c'를 변경해도 영향을 미치지 않습니다. – Galik