主要是4個默認函數的重寫:
代碼:
#include <iostream>
using namespace std;
class Cstring{
private :
char * data;
public :
Cstring(const char * str =NULL);
Cstring(const Cstring &another);
~Cstring();
Cstring & operator=(const Cstring &another);
};
//賦值構造函數
Cstring & Cstring::operator=(const Cstring &another){
if(this == &another)
return *this;
delete [] data;
data = NULL;
data = new char(strlen(another.data) + 1 );
strcpy(data,another.data);
return * this;
}
//普通構造函數
Cstring::Cstring(const char *str){
if(str == NULL){
data = new char[1];
data[0] = '\0';
}else{
data = new char[strlen(str)+1];
strcpy(data,str);
}
}
//拷貝構造函數
Cstring::Cstring(const Cstring & another){
data = new char(strlen(another.data) + 1);
strcpy(data,another.data);
}
//析構函數
Cstring ::~Cstring(){
delete data;
}
void main(){
Cstring str("hello,world");
Cstring st(str),test2;
Cstring test1 = test2 = st;
}