主要是指针拷贝的时候析构会造成空析构。就是两次被析构,第一次析构后,第二次析构就找不到,就会导致报错!!!!!!!!!!!!!
#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");
}