题解 | #浅拷贝和深拷贝#
浅拷贝和深拷贝
http://www.nowcoder.com/practice/535753110cbd4e8987adc2e67f392ab7
这里需要去注意深拷贝和浅拷贝的问题。这也是面试官十分爱问的部分,大家需要多看、多总结,分析原因。
#include <cstring>
#pragma warning(disable : 4996)
using namespace std;
class Person {
public:
char* name; // 姓名
int age; // 年龄
Person(const char* name, int age) {
this->name = new char[strlen(name) + 1];
strcpy(this->name, name);
this->age = age;
}
// write your code here......
Person(Person &p)
{
this->name=new char[strlen(p.name)+1];
strcpy(this->name,p.name);
this->age=p.age;
}
void showPerson() {
cout << name << " " << age << endl;
}
~Person() {
if (name != nullptr) {
delete[] name;
name = nullptr;
}
}
};
int main() {
char name[100] = { 0 };
int age;
cin >> name;
cin >> age;
Person p1(name, age);
Person p2 = p1;
p2.showPerson();
return 0;
}