C 過載 字串類的實現

2021-08-20 09:26:57 字數 1562 閱讀 4253

本文參照於狄泰軟體學院,唐佐林老師的——《c++深度剖析教程》

我們知道c語言的字串是用字元陣列來實現的。這就意味著我們可以用下標操作符來訪問字串中的單個字元。

那麼,string類可以直接訪問單個字元嗎?

示例**:用c方式使用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...