作用:實現兩個自定義資料型別相加的運算
class
person
;person
(int a,
int b)
//成員函式實現 + 號運算子過載
person operator+(
const person& p)
public
:int m_a;
int m_b;};
//全域性函式實現 + 號運算子過載
//person operator+(const person& p1, const person& p2)
//運算子過載 可以發生函式過載
person operator+(
const person& p2,
int val)
void
test()
intmain()
作用:可以輸出自定義資料型別
class
person
//成員函式 p.operator<<(p) 實現不了 p << cout 不是我們想要的效果
//void operator<<(person& p)
<<(cout) 簡化為 p//因此不會成員函式來過載《運算子 因為實現不了cout在左邊
private
:int m_a;
int m_b;};
//全域性函式實現左移過載
//ostream物件只能有乙個 所以用引用
ostream&
operator
<<
(ostream& out, person& p)
void
test()
intmain()
(檢視cout資料型別:右鍵轉到定義 )
總結:過載左移運算子配合友元可以實現輸出自定義資料型別
作用: 通過過載遞增運算子,實現自己的整型資料
class
myinteger
//前置++ 返回引用可以實現鏈式操作(一直對乙個資料進行操作)
myinteger&
operator++(
)//後置++
//int 代表佔位引數 不能寫double float
//不能返回引用,因為返回的temp為區域性物件,函式執行完畢後即被銷毀,後面的操作即為非法操作
myinteger operator++(
int)
private
:int m_num;};
//左移運算子過載
ostream&
operator
<<
(ostream& out, myinteger myint)
//注意這裡的myint也不能用引用
//前置++ 先++ 再返回
void
test01()
//後置++ 先返回 再++
void
test02()
intmain()
總結: 前置遞增返回引用,後置遞增返回值
c++編譯器至少給乙個類新增4個函式
預設建構函式(無參,函式體為空)如果類中有屬性指向堆區,做賦值操作時也會出現深淺拷貝問題預設析構函式(無參,函式體為空)
預設拷貝建構函式,對屬性進行值拷貝
賦值運算子 operator=, 對屬性進行值拷貝
示例:
class
person
//過載賦值運算子
person&
operator
=(person &p)
//編譯器提供的**是淺拷貝
//m_age = p.m_age;
//提供深拷貝 解決淺拷貝的問題
m_age =
newint
(*p.m_age)
;//返回自身
return
*this;}
~person()
}//年齡的指標
int*m_age;};
void
test01()
intmain()
作用:過載關係運算子,可以讓兩個自定義型別物件進行對比操作
示例:
class
person
;bool
operator
==(person & p)
else
}bool
operator
!=(person & p)
else
} string m_name;
int m_age;};
void
test01()
else
if(a != b)
else
}int
main()
函式呼叫運算子 () 也可以過載
由於過載後使用的方式非常像函式的呼叫,因此稱為仿函式
仿函式沒有固定寫法,非常靈活
示例:
class
myprint};
void
test01()
class
myadd};
void
test02()
intmain()
運算子過載之過載型別運算子
普通型別 類型別 呼叫對應的只有乙個引數 引數的型別就是這個普通型別 的建構函式 需求 boy boy1 10000 薪資 建構函式boy int boy boy2 rock 姓名 建構函式boy char 普通型別賦值給類型別其實很簡單,就是專門的對這個賦值的型別定義乙個建構函式。編譯器在執行 的...
運算子過載 賦值運算子的過載
有時候希望賦值運算子兩邊的型別可以不匹配,比如,把乙個int型別變數賦值給乙個complex物件,或把乙個 char 型別的字串賦值給乙個字串物件,此時就需要過載賦值運算子 注意 賦值運算子 只能過載為成員函式 賦值運算子過載例項示例 include include using namespace ...
運算子過載
c 中的運算子 1。大多數系統預定義運算子都能過載 不值得過載 不能被過載 2過載不能改變優先順序 不能改變結合性 不能改變運算子所需運算元的個數 過載後,可按這些運算子的表達方式使用 運算子過載的語法 一 通過運算子過載函式進行過載 1。運算子過載函式是成員函式 語法形式 type x opera...