类string的构造函数、拷贝构造函数和析构函数
類string的構造函數、拷貝構造函數和析構函數
引用http://www.cppblog.com/life02/archive/2011/03/07/96085.html? 在這個帖子的基礎上稍微添加修改了點內容。
String 類的原型如下
class String
{
?? public:
????????? String(const char *str=NULL);?//構造函數
????????? String(const String &other); //拷貝構造函數
????????? ~String(void); //析構函數
????????? String& operator=(const String &other); //等號操作符重載
????????? ShowString();
?? private:
????????? char *m_data; //指針
};
String::~String()
{
??? delete [] m_data; //析構函數,釋放地址空間
}
String::String(const 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(const String &other)//拷貝構造函數,功能與構造函數類似。
{
??? int length=strlen(other.m_data);
??? m_data=new [length+1];
??? strcpy(m_data,other.m_data);
}
String& String::operator =(const 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, const 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
轉載于:https://www.cnblogs.com/zhizhan/p/4915502.html
總結
以上是生活随笔為你收集整理的类string的构造函数、拷贝构造函数和析构函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hibernate简单应用
- 下一篇: Windows 10 之重新安装应用