物聯(lián)網(wǎng)/嵌入式工程師
重磅升級(jí):新增硬件電路設(shè)計(jì)與實(shí)戰(zhàn),讓你軟硬通吃,同級(jí)PK無敵!行業(yè)風(fēng)口、政策傾斜,新晉熱門高薪不內(nèi)卷!0基礎(chǔ)一站式就業(yè)完整路徑,搶占先發(fā)優(yōu)勢(shì)!
RMB.h
class RMB { public: RMB(int _yuan, int _jiao, int _fen); ~RMB(); private: int yuan = 0; int jiao = 0; int fen = 0; };
RMB.cpp
#include "RMB.h" RMB::RMB(int _yuan, int _jiao, int _fen) { yuan = _yuan; jiao = _jiao; fen = _fen; } RMB::~RMB() { }
為這個(gè)類寫了些必要的部分之后,我們要完成一個(gè)功能,加法功能,1塊9毛加2塊3毛,用程序應(yīng)該怎么寫呢?我們可以添加一個(gè) Add 函數(shù),如下:
RMB.h
class RMB { public: RMB(int _yuan, int _jiao, int _fen); ~RMB(); RMB Add(const RMB & rmb); private: int yuan = 0; int jiao = 0; int fen = 0; };
RMB.cpp
#include "RMB.h" RMB::RMB(int _yuan, int _jiao, int _fen) { yuan = _yuan; jiao = _jiao; fen = _fen; } RMB::~RMB() { } RMB RMB::Add(const RMB & rmb) { RMB rmbRes(0, 0, 0); // 分 int f = rmb.fen + fen; int f_ = f / 10; rmbRes.fen = f % 10; // 角 int j = rmb.jiao + jiao + f_; int j_ = j / 10; rmbRes.jiao = j % 10; // 元 int y = rmb.yuan + yuan + j_; int y_ = y / 10; rmbRes.yuan = y % 10; return rmbRes; }
這樣,我們就實(shí)現(xiàn)了一個(gè) Add 函數(shù),如果想要把兩個(gè)人民幣加起來,就可以這樣用:
int main(int argc,char **argv) { RMB rmbA(1, 9, 0); RMB rmbB(2, 5, 0); RMB rmbC = rmbA.Add(rmbB); return 0; }
但是這樣看上去好像有點(diǎn)別扭,事實(shí)上,在很多不支持運(yùn)算符重載的語言里,我們都是這樣干的。但是在 C++ 里,有一種更好的方式,可以把 + 號(hào)進(jìn)行重載。
我們可以把這個(gè) Add 函數(shù)修改成 + 號(hào)的重載:
RMB.h
class RMB { public: RMB(int _yuan, int _jiao, int _fen); ~RMB(); // RMB & Add(const RMB & rmb); RMB operator + (const RMB & rmb); private: int yuan = 0; int jiao = 0; int fen = 0; };
RMB.cpp
#include "RMB.h" RMB::RMB(int _yuan, int _jiao, int _fen) { yuan = _yuan; jiao = _jiao; fen = _fen; } RMB::~RMB() { } // RMB & RMB::Add(const RMB & rmb) RMB RMB::operator + (const RMB & rmb) { RMB rmbRes(0, 0, 0); // 分 int f = rmb.fen + fen; int f_ = f / 10; rmbRes.fen = f % 10; // 角 int j = rmb.jiao + jiao + f_; int j_ = j / 10; rmbRes.jiao = j % 10; // 元 int y = rmb.yuan + yuan + j_; int y_ = y / 10; rmbRes.yuan = y % 10; return rmbRes; }
在這樣修改之后,使用的時(shí)候,我們就可以寫出來更優(yōu)雅的代碼了。
int main(int argc,char **argv) { RMB rmbA(1, 9, 0); RMB rmbB(2, 5, 0); RMB rmbC = rmbA + rmbB; return 0; }
可以看到我們直接把兩個(gè)對(duì)象用 + 號(hào)加了起來,這比之前使用函數(shù)看起來會(huì)好得多。
在 C++ 中,有很多符號(hào)都可以重載,也有一些不能被重載。
可重載的運(yùn)算符:
不可重載的運(yùn)算符:
. .* ->* :: sizeof ?: #
請(qǐng)驗(yàn)證,完成請(qǐng)求
由于請(qǐng)求次數(shù)過多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求
打開微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報(bào)