本文參照於狄泰軟體學院,唐佐林老師的——《c++深度剖析教程》
我們知道c語言的字串是用字元陣列來實現的。這就意味著我們可以用下標操作符來訪問字串中的單個字元。示例**:用c方式使用string類那麼,string類可以直接訪問單個字元嗎?
#include
#include
#include
using
namespace
std;
int main()
}cout
<< n << endl;
return
0;}
輸出結果:4從結果來看,我們可以安裝c字串的方式來使用string物件。
問題:string類是怎麼支援陣列的下標訪問的?陣列訪問符實際是c/c++中的內建操作符,既然是操作符,我們可以進行操作符過載來支援string類的下標訪問。
首先,我們要知道,陣列下標是如何訪問到陣列的具體位置的。
在c語言中,我們可以通過指標運算來訪問具體陣列位置上的元素。
*(a + i) –> a[i]
*(i + a) –> a[i]
實際上,陣列下標和指標運算時這樣轉換的:
a[n] <–>
(a+n) <–> (n+a) <–> n[a]
陣列下標就是通過指標算偏移量,得出元素位置。
只能通過類的成員函式過載
過載函式只能使用乙個引數
可以定義不同引數的多個過載函式
示例**
#include
#include
using
namespace
std;
class test
int& operator (const
string& s)
else
if( s == "2nd" )
else
if( s == "3rd" )
else
if( s == "4th" )
else
if( s == "5th" )
return a[0];
}int length()
};int main()
cout
<< t["5th"] << endl;
cout
<< t["4th"] << endl;
cout
<< t["3rd"] << endl;
cout
<< t["2nd"] << endl;
cout
<< t["1st"] << endl;
return
0;}
(1) 函式的返回值不能為左值,如果希望返回值為左值,那就必須返回引用型別。
(2) 操作符過載函式也符合過載函式規則,可以定義多個同名函式。
C 過載 C 中的字串類
本文參照於狄泰軟體學院,唐佐林老師的 c 深度剖析教程 c語言不支援真正意義上的字串 c語言用字元陣列和一組函式實現字串操作 c語言不支援自定義型別,因此無法獲得字串型別。但是實際工程開發中,大多數情況都需要進行字串處理,所以這個問題需要解決。而在c 中是這樣解決這個問題的 問題 c 中的原生型別系...
C 字串類實現
c 字串類實現,包括預設建構函式,帶乙個引數的建構函式,copy建構函式,賦值運算,加法運算等 在vc6.0下編譯通過 by kvew www.atrix.org bbs www.secoder.org bbs main函式 include include strings.h using names...
C 字串類實現
c 字串類實現,包括預設建構函式,帶乙個引數的建構函式,copy建構函式,賦值運算,加法運算等 在vc6.0下編譯通過 by kvew www.atrix.org bbs www.secoder.org bbs main函式 include include strings.h using names...