zoukankan      html  css  js  c++  java
  • 对象第复制operator=

      类机制中有默认的对象复制操作符=,自定义对象复制需要注意一个问题,如果有遇到指针指向的资源是需要释放的,这时需要毫不留情释放,否则内存空间的泄露就不可避免。复制操作与拷贝构造函数的参数是一致的,只是在功能上复制操作只管复制不管构造。赋值操作返回必须是引用返回,这是为了与复制操作符语义一致,因为复制操作的结果是一个可以地径操作的左值。

    #include<iostream>
    using namespace std;
    class Student{
    char* pname;
    public:

    Student(char *pname = "NoName"){
    cout<<"成功构造"<<endl;
    this->pname = new char[strlen(pname)+1];
    strcpy(this->pname, pname);
    }
    void print(){cout<<pname<<endl;}

    //--------------------------------------------
    Student& operator=(const Student&s){
    if(this==&s)
    return *this;
    delete []pname;
    this->pname=new char[strlen(s.pname)+1];
    strcpy(pname,s.pname);
    return *this;
    }
    //----------------------------------------------
    ~Student(){
    delete[]pname;
    }
    };
    int main(){
    Student a("LiLy");
    Student b;
    b=a;
    b.print();
    return 0;
    }

  • 相关阅读:
    pyinstaller安装和使用
    django项目结构和运行项目
    安装django and 创建项目
    浅谈网络请求基础(理论篇)
    浅谈爬虫初识
    判断是否AVL平衡二叉书
    用递归方法判断两棵树是否相等
    广度优先搜索求树的深度
    堆排序
    归并排序
  • 原文地址:https://www.cnblogs.com/td15980891505/p/5089669.html
Copyright © 2011-2022 走看看