#pragma once
#include<vector>
using namespace std;
class String {
private:
char* data;
public:
String(const char* str = NULL);
String(const String& other);
String(String&& other);
String& operator=(const String& other);
String& operator=(String&& other);
~String();
int length() { return strlen(data); }
/*
其它功能
*/
};
String::String(const char* str) {
if (str == NULL) {
data = (char*)malloc(1);
*data = '\0';
}
else {
data = (char*)malloc(strlen(str) + 1);
char* buffer = data;
while ((*buffer++ = *str++) != '\0');
}
}
String::String(const String& other) {
data = (char*)malloc(strlen(other.data) + 1);
char* buffer = data;
const char* odata = other.data;
while ((*buffer++ = *odata++) != '\0');
}
String::String(String&& other) {
data = other.data;
other.data = NULL;
}
String& String::operator=(const String& other) {
if (this == &other) return *this;
if (data != NULL) free(data);
data = (char*)malloc(strlen(other.data) + 1);
char* buffer = data;
const char* odata = other.data;
while ((*buffer++ = *odata++) != '\0');
return *this;
}
String& String::operator=(String&& other) {
if (this == &other) return *this;
if (data != NULL) free(data);
data = other.data;
other.data = NULL;
return *this;
}
String::~String() {
if (data != NULL)
free(data);
}
C++的string简单实现(拷贝、移动)
最新推荐文章于 2024-06-26 23:15:19 发布