C++------------------>深浅拷贝的问题

主要是指针拷贝的时候析构会造成空析构。就是两次被析构,第一次析构后,第二次析构就找不到,就会导致报错!!!!!!!!!!!!!

 

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
#include<vector>
class Person {

public:
Person(const char* name, int age) {
this->m_Name = new char[strlen(name) + 1];
strcpy(this->m_Name,name);
this->m_Age = age;

}


Person(const Person& p) {
this->m_Name = new char[strlen(p.m_Name) + 1];
strcpy(this->m_Name, p.m_Name);
this->m_Age = p.m_Age;

}


Person& operator=(const Person& p) {
if (this->m_Name != NULL) {
delete[] this->m_Name;
}

this->m_Name = new char[strlen(p.m_Name) + 1];
strcpy(this->m_Name, p.m_Name);
this->m_Age = p.m_Age;
return *this;

}

 

~Person() {
if (this->m_Name != NULL) {

delete[] this->m_Name;
}

}
public:
char* m_Name;
int m_Age;
};

 

void test01() {

Person p("aaa", 20);
std::vector<Person> v_Person;
v_Person.push_back(p);

}

 

int main() {
//const char* name = "sswdegrgrg";;
//std::cout << "name " << int(name) << std::endl;
//std::cout << "len = " << strlen(name) << std::endl;
//char* pname = new char[strlen(name)];
//strcpy(pname, name);

test01();
system("pause");

 


}

posted @ 2020-11-30 08:40  水木清扬  阅读(103)  评论(0)    收藏  举报