0
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;
}
私はポインタと参照で何が起こっているか分かりません。誰も、なぜ2番目のc0.sの出力がまだ "cde"であるのか説明できますか?ありがとうございました。C++のコピーコンストラクタは誰でも説明できますか?
あなたは 'c0.s'を何と予想していますか?なぜ? –
*コピー*にしていますので? – juanchopanza
'c0'はコピーですので、' c'を変更しても影響はありません。 – Galik