对象的复制

 1 class Name
 2 {
 3    const  char* s;
 4    //~~~
 5 };
 6 
 7 class Table
 8 { 
 9    Name *p;
10    size_t sz;
11 public:
12 Table(size_t s=15) {p=new Name[sz=s];}  //构造函数
13 ~Table() {delete[]p;}   //析构函数
14 Table(const Table&);// 复制构造函数
15 Table& operator=(const Table&) //复制赋值     
16 }
17 
18 Table::Table(const table& bt) 
19 {
20 p=new Name[sz=t.sz];
21 for(int i=0;i<sz;i++) p[i]=t.p[i];
22 }
23 
24 Table& Table::operator=(const Table& t)
25 {
26   if(this!=&t){ //当心自赋值
27            delete[] p; 
28             p=new Name[sz=t.sz];
29            for(int i=0;i<sz;i++)
30           p[i]=t.p[i];
31 }
32 return *this;
33 }

复制构造函数是去完成对未初始化的存储区的初始化

复制赋值运算符则必须正确处理一个结构良好的对象。

原文地址:https://www.cnblogs.com/huhaibo/p/3376436.html