在某些特殊的運算情況下,以正常的運算方法不匹配時,就可以使用運算子過載;
注意:當過載運算子一樣的時候,類內作為友元的只放乙個就可以了!!!
標頭檔案:
#include
class
computer
;實現cpp檔案:
#include
"computer.h"
#include
computer::
computer
(int val)
std::string computer::
description()
標頭檔案:
class
computer
;class
games
;實現cpp檔案:
#include
"games.h"
#include
"computer.h"
games::
games
(int val)
computer games::
operator*(
)
測試函式:
/*
運算子過載
假設,一台電腦可以換3臺遊戲機
*/#include
"computer.h"
#include
"games.h"
#include
using
namespace std;
//使用友元,實現運算子過載;
computer operator
+(games& t1,games &t3)
intmain
(void
)
執行結果:
多種運算子的過載應用:
/*
實現賦值運算子 =
比較運算子 < > ==
輸入,輸出運算子 << >>
下標運算子
*/#include
"boy.h"
//使用全域性函式可以指定格式;使程式**美觀
ostream&
operator
<<
(ostream& os,boy&boy)
istream&
operator
>>
(istream& is,boy&boy)
intmain
(void
)else
if(boy1 == boy2)
else
//測試下標運算子功能:列舉型別
cout <<
"名字:"
<
getname()
<<
",年齡:"
<< boy1[age]
<<
",薪資:"
<< boy1[salary]
<<
",係數:"
<< boy1[power]
<< endl;
//測試下標法運算子功能:巨集定義型別
cout <<
"名字:"
<
getname()
<<
",年齡:"
<< boy2[boy_age]
<<
",薪資:"
<< boy2[boy_salary]
<<
",係數:"
<< boy2[boy_power]
<< endl;
system
("pause");
return0;
}
#pragma once
#include
#include
using
namespace std;
#define boy_age "age"
#define boy_salary "salary"
#define boy_power "power"
typedef
enum
boy_key;
class
boy//析構函式
string getname()
boy&
operator
=(boy& boy)
;//賦值函式
bool
operator
>
(boy& boy)
;//大於,
bool
operator
<
(boy& boy)
;//小於,
bool
operator
==(boy& boy)
;//等於,
friend ostream&
operator
<<
(ostream& os, boy& boy)
;//輸出:使用友元可以讓格式更加美觀
friend istream&
operator
>>
(istream& is, boy& boy)
;//輸入:解釋同上
//運算子下標法可以用enum(列舉) 和#define(巨集定義)來實現
intoperator
(int number)
;//列舉實現
intoperator
(string index)
;//巨集定義實現
private
: string name;
int age;
int salary;
intpower();};
#include
"boy.h"
boy::
boy(
)boy::
boy(string name,
int age,
int salary)
boy& boy::
operator
=(boy& boy)
bool boy::
operator
>
(boy& boy)
else
}bool boy::
operator
<
(boy& boy)
else
}bool boy::
operator
==(boy& boy)
else
}int boy::
operator
(int number)
}int boy::
operator
(string index)
else
if(index == boy_salary)
else
if(index == boy_power)
else
}int boy::
power()
return tmp;
}
執行結果:
類與物件 C 過載運算子
class person 呼叫形式 person p3 p1.operator p2 或者 p3 p1 p2 person operator person p1,person p2 intmain 一般情況下,我們把算術運算子定義成非成員函式,因為我們不需要改變運算物件的狀態,所以形參都是常量的引用...
2 7 類與物件 C 運算子過載
目錄 一 加號運算子過載 1.加法過載可以通過全域性函式實現 2.加法過載可以通過類成員函式實現 二 左移運算子過載 三 遞增運算子過載 四 賦值運算子過載 五 關係運算子過載 六 函式呼叫運算子過載 運算子過載是對已有運算子進行重新定義,賦予其新的功能,使其適應不同資料型別。實現兩個自定義資料型別...
C 類與物件 中 賦值運算子過載
將乙個沒有賦值含義的字元進行重新修改 例如 簡單的來說,運算子過載就是將對應的符號賦予新的意思,能夠更加容易處理比較複雜的形式,例如對兩個日期的比較,不只是單純的數字之間的比較,我們就需要寫一系列的 來將等於號重新賦予新的意思即可.操作 返回值型別 operator操作符 引數列表 1.用於內建型別...