在c++中運算子過載通過兩種方式:1.友元函式的方式 2.成員函式的方式
五種運算子不可以過載 點運算子. 網域名稱解析符:: 點星運算子.* 三目運算子:? 求大小運算子sizeof
不能使用成員過載的運算子》 <<
不能通過友元的方式過載的運算子 賦值運算子= 括號運算子()下標運算子 箭頭運算子->
雙目運算子推薦使用友元 單目運算子 推薦使用成員
友元函式是單項傳遞的 a是b的友元類 在b中不申明 ,b不是a的友元類 a是b的友元類 b是c的友元類 a不一定是c的友元類 需要在c中申明
友元方法和成員方法的區別是 友元方法不能使用this呼叫成員變數而成員方法可以呼叫this
1#pragma once
2 #include3
using
namespace
std;
4classa5
2526 a& operator++()
30 a operator++(int)//
區分於前++ 裡面放乙個引數表示後++
3136
//過載輸出輸入運算子
37 friend ostream& operator
<<(ostream& os,const a& a)//
引用a防止被修改加上const
3842 friend istream& operator>>(istream& is, a& a)//
不加const表可以修改a的值,a的值為鍵盤輸入的值
4347
int& operator*() //
過載解引用運算子
4851
int& operator(int index) //
過載下標運算子
5255
56operator
bool() //
強轉bool型別 沒有返回值型別
5760 friend a operator*(const a& a, const a& b)//
使用友元方法對乘法運算子過載
6166 };
標頭檔案中通過類a申明需要使用的過載運算子
1 #include "a.h"23
4 a::a(int
data)
58 a::a(const a&other)912
1314 a::~a()
1517
int a::getdata() //
get方法
1821
22void a::setdata(int data)//
set方法
2326
int adda(const a& a, const a&b)
2730
31 a operator+(const a& a, const a& b)//
使用友元方法對加法運算子過載
3237 a a::operator-(const a&b)//
利用成員方法 對運輸符進行過載
38
在a.cpp檔案中在類外定義需要使用到的函式以及過載運算子
1 #include2 #include"a.h"
3 #include//
存放字串
4int
main()
543 cin.get
();44
return0;
45 }
運算子過載之過載型別運算子
普通型別 類型別 呼叫對應的只有乙個引數 引數的型別就是這個普通型別 的建構函式 需求 boy boy1 10000 薪資 建構函式boy int boy boy2 rock 姓名 建構函式boy char 普通型別賦值給類型別其實很簡單,就是專門的對這個賦值的型別定義乙個建構函式。編譯器在執行 的...
運算子過載 賦值運算子的過載
有時候希望賦值運算子兩邊的型別可以不匹配,比如,把乙個int型別變數賦值給乙個complex物件,或把乙個 char 型別的字串賦值給乙個字串物件,此時就需要過載賦值運算子 注意 賦值運算子 只能過載為成員函式 賦值運算子過載例項示例 include include using namespace ...
運算子過載
c 中的運算子 1。大多數系統預定義運算子都能過載 不值得過載 不能被過載 2過載不能改變優先順序 不能改變結合性 不能改變運算子所需運算元的個數 過載後,可按這些運算子的表達方式使用 運算子過載的語法 一 通過運算子過載函式進行過載 1。運算子過載函式是成員函式 語法形式 type x opera...