string类中使用到了赋值构造函数、复制构造函数、构造函数、默认构造函数、析构函数、重载操作符等一些类操作
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
class String { public : String() { data = new char [1]; //这里为什么使用new char[1]呢,虽然是一个字符,这是为了和析构函数保持对称,因为在别的构造函数中使用的char[] data[0]= '\0' ; length = 0; } String( const char * str) { length = strlen (str); data = new char [length+1]; strcpy (data,str); data[length]= '\0' ; } String( const char * str, int n) { length = n; data = new char [n+1]; strncpy (data,str,n); data[length] = '\0' ; } String( const String& src) //拷贝构造函数 也就是复制构造函数 { length = src.length; data = new char [length+1]; strcpy (data,src.data); } String& operator=( const String& src) //赋值构造函数 { if ( this == &src) return * this ; delete [] data; data = new char [src.length+1]; strcpy (data,src.data); return * this ; } String& operator=( const char * src) //另一种的赋值构造函数 { delete [] data; length = strlen (src); data = new char [length+1]; strcpy (data,src); return * this ; } char & operator[]( int n) { return data[n]; } const char & operator[]( int n) const //对于const成员函数 最好就是返回const的引用,这样是为了避免返回值被修改 { return data[n]; } friend ostream& operator<<(ostream& os, const String& st); ~String() { delete [] data; } private : char * data; int length; }; ostream& operator<<(ostream& os, const String& st) { os<<st.data; return os; } |
以上这篇一个string类的简单实现案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。