#define _CRT_SECURE_NO_WARNINGS
#include <string>
#include <iostream>
using namespace std;
class Mystr {
public:
Mystr():data_S(new char[1]) {
*data_S = '\0';
}
Mystr(const Mystr& t)
: data_S(new char[t.size()+1]) {
strcpy(data_S, t.c_str());
/*
函数关键字:strcpy
使用格式:char* strcmp(char* buffer,char*str)
功 能: 把从str地址开始且含有NULL结束符的字符串复制到以buffer开始的地址空间,buffer地址空间中必须有足够的空间来容纳str的字符串
*/
}
Mystr(const char* str):data_S(new char[strlen(str)+1]) {
strcpy(data_S, str);
}
Mystr& operator = (Mystr& rhs) {
if (this == &rhs) {
return *this;
}
else {
swap(rhs);
return *this;
}
}
~Mystr() {
delete[] data_S;
}
size_t size() const {
return strlen(data_S);
}
private:
const char* c_str() const {
return data_S;
}
void swap(Mystr &rhs) {
std::swap(data_S, rhs.data_S); //强调同名函数
}
char* data_S;
};
int main() {
Mystr s;
Mystr s1("abc");
s = s1;
std::cout<< s.size() << endl; //直接输出一个对象的话 要重写<<
system("pause");
}
2020.04.25.C++:关于string的自我实现
猜你喜欢
转载自blog.csdn.net/yinglang2011/article/details/105745231
今日推荐
周排行