乙個自己實現的string

2022-03-01 23:14:17 字數 1321 閱讀 7466

最近實現了乙個string

類,新增了一些c++11

元素。除了基本的構造析構函式,拷貝構造和賦值函式,另外新增移動拷貝和賦值函式。default是乙個很方便的特性有木有。

//

default constructor

kianstring()=default

;kianstring(

const

char *c): ch_(0

) ;~kianstring()

//copy constructor

kianstring(const kianstring &str)

//assign operator, is ok for both lvalue and rvalue!

kianstring &operator=(kianstring str) noexcept

//move constructor

kianstring(kianstring &&str) noexcept : ch_(str.ch_)

賦值拷貝採用了

copy and swap  idiom:

inline void swap(kianstring &str1, kianstring &str2)

//assign operator, is ok for both lvalue and rvalue!

kianstring &operator=(kianstring str) noexcept

這樣做有幾個好處:

1.引數是傳值呼叫,可以同時使用左值和右值,使用右值時自動呼叫移動拷貝函式

2.強異常安全的,異常只會發生在引數拷貝時,如果發生異常,不會影響this

。3.值傳遞產生副本,所以自賦值也是正確的.

加法運算子過載:

kianstring &operator+=(const kianstring &str)

template

const t operator+(const t& lhs, const t& rhs)

1. 按照《c++

程式設計規範》第27

條,實現+

運算子,先要實現+=

,語義一致,便於維護

2. 將operator+

定義為非成員函式,能夠同時接受左右引數的隱式轉換,

因為operator+=

是public

,所以operator+

不需要設成friend

。3. 將operator+

定義為template

。code:

自己動手實現乙個簡單的string類 一

定義乙個基本的 string 類 class string private char base long int length 我們可以看到在這個類裡面我們用乙個char型指標來儲存字串值,long int 型值length來儲存字串的長度。由於我們知道string類支援這樣的建構函式 string...

實現乙個string類

需要實現的基本功能 建構函式 拷貝建構函式 賦值函式 析構函式.以前合稱big three,現在叫做copy control 1 class string 1213 不簡潔版本 14string string const char str else 23 24 2526 string string ...

自己寫乙個簡易的string型別

c語言中沒有string型別,於是,在使用c語言的時候,總會用char 型別來替代string型別,但是char 和string型別還是有一定的不同的。最大的差異就是在對字串的操作上。顯然 比起char string對於字串的操作更加的簡便,比如說 1.兩個string類的變數str1和str2,我...