加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
my_string.cpp 1.52 KB
一键复制 编辑 原始数据 按行查看 历史
倪申超 提交于 2024-10-30 13:38 . 仿写string第一版
#include<iostream>
#include<cstring>
class MyString
{
private:
char* data;
size_t size;
size_t capacity;
public:
//默认构造函数
MyString():data(nullptr),size(0),capacity(0){};
//拷贝构造函数
MyString(const char*str){
size_t len=std::strlen(str);
capacity=size=len;
data=new char[capacity];
std::copy(str,str+len,data);
}
//析构函数
~MyString(){
delete[] data;
}
//重载+运算符
MyString operator+(const MyString&other)
{
MyString newStr;
newStr.size=size+other.size;
newStr.capacity=capacity+other.capacity;
newStr.data=new char[newStr.capacity];
std::copy(data, data + size, newStr.data);
std::copy(other.data, other.data + other.size, newStr.data + size);
return newStr;
}
//重载=运算符
MyString& operator=(const MyString&str)
{
delete[] data;
size=str.size;
capacity=str.capacity;
data=new char[str.capacity];
std::copy(str.data,str.data+str.size,data);
return *this;
}
//string输出
friend std::ostream& operator<<(std::ostream& os,const MyString& str);
};
std::ostream& operator<<(std::ostream& os,const MyString& str)
{
os<<str.data;
return os;
}
int main()
{
MyString str1 = "Hello";
MyString str2 = "World";
MyString str3 = str1 + str2;
std::cout << "str1: " << str1 << std::endl;
std::cout << "str2: " << str2 << std::endl;
std::cout << "str3: " << str3 << std::endl;
return 0;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化