我有一个关于复制构造函数的问题。我在互联网上看到了这些例子。第一个说没有复制构造函数,如果您在 student2 上更改某些内容,相同的字段也会在 student1 上更改。但是在第二个示例中,由于复制构造函数,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
}