📄 mystring.cpp
字号:
//类MyString的实现
#include "mystring.h"
#include <string.h>
// MyString的析构函数
MyString::~MyString(void)
{
if(m_data)
delete [] m_data;
m_data=NULL;
}
// MyString的普通构造函数
MyString::MyString(const char *str)
{
if(str==NULL)
{
m_data = new char[1];
*m_data = '\0';
}
else
{
int length = strlen(str);
m_data = new char[length+1];
strcpy(m_data, str);
}
}
// 拷贝构造函数
MyString::MyString(const MyString &other)
{
int length = strlen(other.m_data);
m_data = new char[length+1];
strcpy(m_data, other.m_data);
}
MyString & MyString::operator=(const MyString &other)
{
if(this == &other) // 检查自赋值
return *this;
if(m_data)
delete [] m_data; // 释放原有的内存资源
int length = strlen(other.m_data);
m_data = new char[length+1]; //分配新的内存资源,并复制内容
strcpy(m_data, other.m_data);
return *this; // 返回本对象的引用
}
MyString MyString::operator +(const MyString &other)
{
MyString temp;
// 分配新的内存资源,并复制内容
int length1 = strlen(other.m_data);
int length2= strlen(m_data);
temp.m_data = new char[length1+length2+1];
strcpy(temp.m_data,m_data);
strcat(temp.m_data,other.m_data);
return temp;
}
ostream &operator<<(ostream &stream,const MyString &str)
{
stream<<str.m_data;
return stream;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -