myString操作符過載

2022-09-17 12:36:12 字數 2149 閱讀 1961

寫在前面的話:

過載是c++的重要內容,在自定義乙個類的時候,需要對類中的方法進行過載,才能方便的實現相應的功能,比如一些運算子,構造,析構函式,一些功能函式等等,而c++語言自帶的這些東西只使用於基本資料型別。另外,在自定義類中有指標的屬性,注意一下深拷貝和淺拷貝的問題。

下面是自己的實現過程,已測試,可用。

注意:1、記憶體洩露問題

2、*a++的含義(想想後置++的過載)

不使用庫函式,自定義自己的string類,其中只有乙個指標屬性(注意過載operator=(),防止淺拷貝問題)

首先,實現mystrlen和mystrcpy這兩個常用的函式。

然後,依次實現:

無參建構函式mystring():

有參建構函式mystring(const char* str):

拷貝建構函式mystring(const mystring& copyobj):

析構函式~mystring(void):

int mystrlen(const char* str):

char* mystrcpy(char* des, const char* src):

operator=()(const mystring& obj):

const char* tolow():

int mycomparecaseinsensitive(const char* str):

1.輔助函式

int mystring::mystrlen(const

char*str)

char* mystring::mystrcpy(char* des, const

char*src)

2.無參建構函式,有參建構函式,拷貝建構函式,目標物件尚未存在,直接申請空間,賦值即可。

mystring::mystring()

mystring::mystring(

const

char*str )

else

if (null !=str)

}mystring::mystring(

const mystring& copyobj) //

const(唯讀) 引用(若用元素會死迴圈)

mystring::~mystring(void

)}

3.  operator=(const mystring& obj)

mystring& mystring::operator =(const mystring&obj)

mydata = new

char[mystrlen(obj.mydata) + 1

];

if (null !=mydata)

mystrcpy(mydata, obj.mydata);

return *this

;}

const

char*str)

5.轉換大小寫

const

char*mystring::tolow()

return

mydata;

}

6. 比較函式,不區分大小寫

int mystring::mycomparecaseinsensitive(const

char*str)

ret = *temdata - *src;

if (0 == ret || 32 == ret || -32 == ret || ('

\0' == *src && '

\0' == *temdata))

ret = 0

;

if ((ret > 0 && ret != 32) || ('

\0' == *src && '

\0' != *temdata))

if ((ret < 0 && ret != -32) || ('

\0' == *temdata && '

\0' != *src))

return

ret;

}

14 MyString 類的操作符過載

class string const char c str1 intlength 過載 操作符 ostream operator ostream output,string s istream operator istream input,string s 建構函式 string string in...

操作符過載

ifndef vertex h define vertex h class vertex vertex float px float py float pz vertex operator const vertex p vertex operator const vertex p void oper...

操作符過載

1.操作符是靜態方法,返回值表示操作結果,引數是運算元。2.操作符過載需要在過載的操作符前加上operator關鍵字。3.最好少用操作符過載,只有在意義明晰而且與內建類的操作一致時才適合使用,以免造成混亂。以建立的分數類 fraction 中的 為例,該分數類中有兩個int型的私有屬性 分子 num...