嵌入式工程师
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 可将课程添加到书签
举报