1.实现C++ string 类

1.C++ 中动态内存管理

2.深拷贝和浅拷贝

3.预算符重载

4.移动语义,右值引用

5.智能指针

1.实现C++ string 类

img

https://cloud.tencent.com/developer/article/2456266

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
namespace W
{
Class String{
public:
size_t capcity;
char* _str;
size_t _size;
//构造函数
String(const char* str = ""){
_size = strlen(str);//
capcity = _size;
_str = new char[_size+1];//多开一个空间,用来存放'\0'
strcpy(_str,str);
}
//默认构造函数,浅拷贝,两个对象指向同一块内存
String(const String& s){
_str = s._str;
_size = s._size;
capcity = s.capcity;
}

String& operator=(const String& s){
if(this != &s){
delete[] _str;
_capcity = s._capcity;
_size = s._size;
_str = new char[_capcity+1];
strcpy(_str,s._str);
}
return *this;
}
//赋值运算符返回的是引用,因为可以连续赋值
//深拷贝,两个对象指向不同的内存,避免浅拷贝的问题

~String(){
delete[] _str;
_str = nullptr;
_size = 0;
capcity = 0;
}

};
}

1.引用和指针,对象,地址
2.*