|
http://www.cnblogs.com/Laokong-ServiceStation/archive/2011/04/19/2020402.html
引用http://www.cppblog.com/life02/archive/2011/03/07/96085.html 在这个帖子的基础上稍微添加修改了点内容。 String 类的原型如下 class String { public: String(co n st char *str=NULL); //构造函数 String(co n st String &other); //拷贝构造函数 ~String(void); //析构函数 String& operator=(co n st String &other); //等号操作符重载 ShowString();
private: char *m_data; //指针 };
String::~String() { delete [] m_data; //析构函数,释放地址空间 } String::String(co n st char *str) { if (str==NULL)//当初始化串不存在的时候,为m_data申请一个空间存放'\0'; { m_data=new char[1]; *m_data='\0'; } else//当初始化串存在的时候,为m_data申请同样大小的空间存放该串; { int length=strlen(str); m_data=new char[length+1]; strcpy(m_data,str); } }
String::String(c o n st String &other)//拷贝构造函数,功能与构造函数类似。 { int length=strlen(other.m_data); m_data=new [length+1]; strcpy(m_data,other.m_data); } String& String::operator =(co n st String &other) { if (this==&other)//当地址相同时,直接返回; return *this;
delete [] m_data;//当地址不相同时,删除原来申请的空间,重新开始构造; int length= strlen (other.m_data); m_data=new [length+1]; strcpy(m_data,other.m_data); return *this; } String::ShowString()//由于m_data是私有成员,对象只能通过public成员函数来访问; { cout<<this->m_data<<endl; } main() { String AD; char * p="ABCDE"; String B(p); AD.ShowString(); AD=B; AD.ShowString();
} 1. strCopy 函数可以为标准库函数 char *strcpy(char *dest, co n st char *src); 需要#inculde <string.h> 2.参考连接: 高质量C++C编程指南 http://man.chinaunix.net/develop/c&c++/c/c.htm 字符串函数 http://www.ggv.com.cn/forum/clib/string/strcpy.html
|