首先,我們將所需寫過載函式和其他成員變數放在乙個標頭檔案中。
函式過載的判斷標準(1、引數個數不同 2、引數型別不同 3、引數順序不同)
注意:函式的返回值不可作為函式過載的判斷標準。
在這裡存在對運算子的過載,在運算子的過載前,需要加關鍵字operator
在這裡對引用及物件要關注一下:引用返回的是變數,可以對他進行賦值。物件返回的是變數裡面的值,不可以再次進行修改。
不能過載的運算子包括( . : .*(成員指標運算子) ?: sizeof )
當無法修改左運算元的類時,使用全域性函式進行過載(例如:下面 << 屬於ostream類,不可修改,只能用全域性函式進行過載。)。
只能通過成員函式進行過載的運算子(= 【】 () ->)
#ifndef _mystring_h
#define _mystring_h
#includeusing namespace std;
class mystring
;#endif
我們在另乙個檔案中對函式進行具體的實現。
#include#include#include"mystring.h"
using namespace std;
mystring::mystring()
mystring::mystring(char *str)
mystring::mystring(int len,char ch)
; in >> tmp;
if(s.m_data!=null)
s.m_len=strlen(tmp);
s.m_data=new char[s.m_len+1];
strcpy(s.m_data,tmp);
return in;
}//對》 進行過載。
mystring & mystring::operator +=(const mystring &s)
//對+=進行過載。
mystring & mystring::operator =(const mystring &s)
*///這邊如果未注釋時需對==進行過載。
m_len=s.m_len;
if(m_data!=null)
m_data=new char[s.m_len+1];
strcpy(m_data,s.m_data);
}char & mystring::operator (int index)
主函式如下,進行檢查。
#include#include"mystring.h"
using namespace std;
int main()
通過對運算子過載進行複數簡單運算
對複數的除法運算有瑕疵 如何能在不更改show 函式的情況下使得複數輸出能保留位數輸出。include include using namespace std class complex double real double imag complex operator const complex c...
通過Curl 對url進行encode操作
最近做專案的時候,通過 gflags reload 時候 發現對於某些value中包含 中文等字元的支援不夠好,value被截斷了。經過分析後,發現程式對url切分是用 為標準的,如果value中帶有這樣的特殊字元,必然導致截斷。解決的方法也很簡單,框架預設對value進行進行了urldecode的...
對String型別的小數進行取位數
專案中要將傳過來的string型別的小數重新取位數顯示,找了幾個方法,發現還是這個方法最好用 float fnum float.valueof c.getrebate decimalformat df new decimalformat 0.0 string snum snum df.format ...