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類的簡單實現案例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。