14 MyString 類的操作符過載

2021-09-16 22:31:21 字數 2400 閱讀 3792

class string

const

char

*c_str1()

intlength()

};

//過載 << >>操作符

ostream& operator <<

(ostream &output, string &s)

istream& operator >>

(istream &input, string &s)

//建構函式

string:

:string

(int len)

else

if(len >0)

}

//建構函式

string:

:string

(const

char

*str)

else

}

//拷貝建構函式

string:

:string

(const string &s)

//析構函式

string::~

string()

}

//過載 = 操作符 char *str

string& string:

:operator=

(const

char

*str)

//根據str分配記憶體

if(str ==

null

)else

return

*this;

}

//過載 = 操作符 string &s

string& string:

:operator=

(const string &s)

m_len =

strlen

(s.m_str)

; m_str = new char

[m_len +1]

;memcpy

(m_str, s.m_str, m_len +1)

;return

*this;

}

//過載  操作符

char

& string:

:operator(

int index)

//過載 == 操作符

bool string:

:operator==

(const string &s)

constif(

strcmp

(m_str, s.m_str)==0

)return false;

}bool string:

:operator==

(const

char

*str)

const

return false;

}//長度不相等,返回false

if(m_len !=

strlen

(str)

)elseif(

strcmp

(m_str, str)==0

)return false;

}

//過載 != 操作符

bool string:

:operator!=

(const string &s)

const

bool string:

:operator!=

(const

char

*str)

const

//過載 > < 操作符

int string:

:operator>

(const string &s)

const

int string:

:operator<

(const string &s)

const

//過載 > < 操作符

int string:

:operator>

(const

char

*str)

const

int string:

:operator<

(const

char

*str)

const

myString操作符過載

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

c string類的操作符過載

首先 先了解 class 類裡面給我們 預設過載了6個函式 分別是 預設構造 預設析夠 預設賦值 拷貝構造 過載 過載 然而我們需要關注的是 拷貝構造 因為如果你不重寫 拷貝構造的話 裡面的 資料全部都是淺拷貝 當 自己的倆個string 相等的時候 就會出問題 它裡面的char只想同乙個空間 所以...

C 類賦值( )操作符

如果使用者沒有編寫賦值操作符函式,編譯器就會自動為使用者建立乙個。這就是為什麼使用者可以實現p1 p2,為類賦值。語法 類名 operator const 類名 source arg 說到這裡,便想起來之前提到的副本構造器,用到副本構造器的地方其中之一是用某個物件去初始化另乙個物件。point a ...