代码拉取完成,页面将自动刷新
#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;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。