您的位置:首页 > 其它

string函数的构造函数,析构函数,拷贝构造,赋值构造

2017-10-27 19:16 197 查看
#include<iostream>
using namespace std;

#include<assert.h>
class String
{
public:
String(const char *str = NULL);
String(const String& other);
String& operator=(const String & other);
~String(void);
void print()
{
cout<<m_data<<endl;
}
private:
char* m_data;
};

String::String(const char *str)
{
if(str == NULL)
{
m_data = new char[1];
assert(m_data != NULL);
*m_data = '\0';
}
else
{
int length = strlen(str);
m_data = new char[length+1];//特别重要,否则会造成程序奔溃;
assert(m_data != NULL);
strcpy(m_data,(char*)str);
}
}
String::String(const String& other)
{
int length = strlen(other.m_data);
m_data = new char[length+1];//一定要多加1;
assert(m_data!=NULL);
strcpy(m_data,other.m_data);
}
String& String::operator=(const String& other)
{
if(this != &other)
{
delete []m_data;
int length = strlen(other.m_data);
m_data = new char[length+1];//一定要多加1;
assert(m_data != NULL);
strcpy(m_data,other.m_data);
}
return *this;
}
String::~String(void)
{
delete []m_data;
m_data = NULL;
}
int main()
{
String sr("abcd");
String s = sr;
String sc = "befe";//调用的是构造函数;
sc =sr;
sr.print();
s.print();
sc.print();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐