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 }
复制构造函数是去完成对未初始化的存储区的初始化
复制赋值运算符则必须正确处理一个结构良好的对象。