コピー コンストラクターについて質問があります。これらの例をインターネットで見ます。最初のものは、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
}