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