C 語言基礎(實現string類)

2021-10-01 09:41:16 字數 1398 閱讀 7662

string類的實現

涉及到

拷貝構造函式呼叫的三種情況

深拷貝淺拷貝

const修飾為常函式

過載輸出<<

過載賦值運算子=

過載下標運算子[

]

/*

拷貝構造函式呼叫的三種情況?

1.用乙個物件初始另乙個物件

2.用物件作為實參傳遞給函式

3.函式的返回值為物件,建立臨時物件作為返回值

深拷貝在計算機中開闢了一塊新的記憶體位址用於存放複製的物件。

淺拷貝只是完成資料本身的賦值 ,淺複製僅僅是指向被複製的記憶體位址,

如果原位址中物件被改變了,那麼淺複製出來的物件也會相應改變

char s[10]="qwe123";

char *s1,*s2;

s1=s;//淺拷貝

s2=new char[strlen(s)+1];// 深拷貝

strcpy(s2,s);

*/#include

#include

using

namespace std;

class

m_string

;//2.物件作為實參傳遞給函式引數

void

test_cp

(m_string m)

intmain()

system

("pause");

return0;

}m_string::

m_string()

m_string::

~m_string()

m_string::

m_string

(const

char

* s)

m_string::

m_string

(const m_string& tmp)

void m_string::

show()

const

//過載輸出

ostream&

operator

<<

(ostream& os,

const m_string& m)

//驗證第三種拷貝構造函式呼叫

m_string m_string::

get_info()

//過載賦值運算子

m_string& m_string::

operator

=(m_string& m)

//過載下標運算子

char

& m_string::

operator

(int n)

else

return str[n]

;}

C 語言基礎 16 string類

使用 string 類需要包含標頭檔案,下面的例子介紹了幾種定義 string 變數 物件 的方法 include include using namespace std intmain string s int len s.length cout 注意 與c不同,string末尾沒有 0 字元,所...

c 實現的string類

普通版 class string else 拷貝建構函式 string const string str 引數為引用,如果為值的話 可能無限呼叫拷貝構造陷入死迴圈 pstr new char strlen str.pstr 1 賦值過載函式 string operator const string ...

C 自實現String類

string.h include include using namespace std class string string.cpp include string.h string string 預設建構函式,構造空字串 string string int n,char c 普通建構函式 tem...