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...