实现c++中的string 发表于 2016-11-29 c++经典面试题 以下代码来源于https://github.com/chenshuo/recipes/blob/fcf9486f5155117fb8c36b6b0944c5486c71c421/string/StringTrivial.h 自己记录下来,留作笔记。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748pragma once#include<utility>#include<assert.h>#include<string.h>class String{public: String():data_(new char[1]){ *data_ = '\0'; } String(const char* str):data_(new char[strlen(str)+1]) { strcpy(data_, str); } String(const String &rhs):data_(new char[rhs.size()+1]) { strcpy(data_, rhs.c_str()); } String& operaotr=(String rhs) { swap(rhs.data_); return *this; } ~String() noexcept { delete[] data_; } String(String&& rhs)noexcept:data_(rhs.data_) { rhs.data_ = nullptr; } size_t size() const { return strlen(data_); } const char* c_str() const { return data_; } void swap(String& rhs) { std::swap(data_, rhs.data_); }private: char* data_;};