zoukankan      html  css  js  c++  java
  • 关于深拷贝和浅拷贝的疑问

      深拷贝和浅拷贝只是针对于指针, 

      浅拷贝:也就是在对象复制时,只是对对象中的数据成员进行简单的赋值,如果对象中存在动态成员,即指针,浅拷贝就会出现问题

    这个默认的拷贝构造函数采用的是“位拷贝”(浅拷贝),而非“值拷贝”(深拷贝)的方式,如果类中含有指针变量,默认的拷贝构造函数必定出错。

     1 #include<iostream>
     2 
     3 using namespace std;
     4 
     5 class Test
     6 {
     7 public:
     8     Test (const char*mp)
     9     {
    10         m_len=strlen(mp);
    11         m_p=(char *)malloc(m_len+1);
    12         strcpy(m_p,mp);
    13     }
    14     Test (const Test &t1)
    15     {
    16         m_len=t1.m_len;//写这个函数的时候要多加注意
    17         m_p=(char *)malloc(m_len+1);
    18         strcpy(m_p,t1.m_p);
    19     }
    20     ~Test ()
    21     {
    22         if(m_p!=NULL)
    23         {
    24             free(m_p);
    25             m_p=NULL;
    26             m_len=0;
    27         }
    28     }
    29 private:
    30     int m_len;
    31     char*m_p;
    32 protected:
    33 };
    34 int main()
    35 {
    36     Test obj0="renshanbeigouqi";
    37     Test obj1=obj0;
    38     system("pause");
    39 }
  • 相关阅读:
    kubernetes的设计理念
    kubernetes整体架构
    kubernetes的起源
    云原生有未来吗?
    cloud native
    kata containers
    go特性
    开源在线分析诊断工具Arthas(阿尔萨斯)--总结
    javaAgent介绍
    oracle函数操作
  • 原文地址:https://www.cnblogs.com/xiaochige/p/6572516.html
Copyright © 2011-2022 走看看