コピー コンストラクターについて質問があります。これらの例をインターネットで見ます。最初のものは、student2で何かを変更すると、同じフィールドがstudent1でも変更される場合、コピーコンストラクターなしで言います。しかし、2 番目の例では、コピー コンストラクターがあるため、student2 の変更は Student1 に影響しません。これがどのように起こったのか理解できませんでした。実際にコピーコンストラクターはここで何をしますか? (悪い英語でごめんなさい)(すべての回答に感謝します:))
class MITStudent {
public:
int studentID;
char *name;
MITStudent() {
studentID = 0;
name = "";
}
};
int main() {
MITStudent student1;
student1.studentID = 98;
char n[] = "foo";
student1.name = n;
MITStudent student2 = student1;
student2.name[0] = 'b';
cout << student1.name; // boo
}
二つ目
class MITStudent {
public:
int studentID;
char *name;
MITStudent() {
studentID = 0;
name = "";
}
MITStudent(MITStudent &o) {
name = my_strdup(o.name);
studentID = o.studentID;
}
};
int main() {
MITStudent student1;
student1.studentID = 98;
char n[] = "foo";
student1.name = n;
MITStudent student2 = student1;
student2.name[0] = 'b';
cout << student1.name; // foo
}