深复制、浅复制

#include <iostream>

using namespace std;

class CDemo {
public:
  CDemo(int pa,char *cstr)
  {
    this->a = pa;
    this->str = new char[104];
    strcpy(this->str,cstr);
    //this->str = cstr;
  }

  int getA()
  {
    return this->a;
  }

  char* getCStr()
  {
    return this->str;
  }

  void setA(int a)
  {
    this->a = a;
  }

  void setStr(char *cstr)
  {
    this->str = new char[104];
    strcpy(this->str, cstr);
  }

  void setStr2(char *cstr)
  {
    this->str = cstr;
  }

  ~CDemo()
  {
    delete str;
  }
private:
  int a;
  char *str;
};

 

int main()
{
  CDemo A(10,"hello");
  cout <<"A:"<< A.getA()<<" "<<A.getCStr()<< endl;

  CDemo B = A;
  cout << "B:" << B.getA() << " " << B.getCStr() << endl;

  B.setA(30);
  B.setStr("word");//深复制
  //B.setStr2("word2");//浅复制

  cout << "B:" << B.getA() << " " << B.getCStr() << endl;
  cout << "A:" << A.getA() << " " << A.getCStr() << endl;


  system("pause");
  return 0;
}

 

-----------------------------------------------------------------------------------------------------

A:10 hello
B:10 hello
B:10 word
A:10 hello
请按任意键继续. . .

posted @ 2019-06-05 08:53  西北逍遥  阅读(125)  评论(0编辑  收藏  举报