嵌入式工程師
3次就業內推,全流程就業服務,行業風口、政策傾斜,新晉熱門高薪不內卷,越老越吃香!0基礎一站式就業完整路徑,搶占先發優勢!

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()
{
}
為這個類寫了些必要的部分之后,我們要完成一個功能,加法功能,1塊9毛加2塊3毛,用程序應該怎么寫呢?我們可以添加一個 Add 函數,如下:
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;
}
這樣,我們就實現了一個 Add 函數,如果想要把兩個人民幣加起來,就可以這樣用:
int main(int argc,char **argv)
{
RMB rmbA(1, 9, 0);
RMB rmbB(2, 5, 0);
RMB rmbC = rmbA.Add(rmbB);
return 0;
}
但是這樣看上去好像有點別扭,事實上,在很多不支持運算符重載的語言里,我們都是這樣干的。但是在 C++ 里,有一種更好的方式,可以把 + 號進行重載。
我們可以把這個 Add 函數修改成 + 號的重載:
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;
}
在這樣修改之后,使用的時候,我們就可以寫出來更優雅的代碼了。
int main(int argc,char **argv)
{
RMB rmbA(1, 9, 0);
RMB rmbB(2, 5, 0);
RMB rmbC = rmbA + rmbB;
return 0;
}
可以看到我們直接把兩個對象用 + 號加了起來,這比之前使用函數看起來會好得多。
在 C++ 中,有很多符號都可以重載,也有一些不能被重載。
可重載的運算符:

不可重載的運算符:
. .* ->* :: sizeof ?: #
請驗證,完成請求
由于請求次數過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報