zoukankan      html  css  js  c++  java
  • 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");


    }

  • 相关阅读:
    泰勒综合
    滤波器、窗等的系数为什么是对称的?
    l'alphabet en francais
    弄清for循环的本质
    js中的闭包
    js中用正则表达式
    java Calendar
    Android实现XML解析技术
    junit4 详解
    redhat vi 命令
  • 原文地址:https://www.cnblogs.com/shuimuqingyang/p/14059407.html
Copyright © 2011-2022 走看看