为了账号安全,请及时绑定邮箱和手机立即绑定

趣味 C++ 进阶

难度初级
时长 8小时 0分
学习人数
综合评分10.00
3人评价 查看评价
10.0 内容实用
10.0 简洁易懂
10.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++ 中,有很多符号都可以重载,也有一些不能被重载。

    查看全部
    1 采集 收起 来源:运算符重载

    2021-07-31

  • 浮点数结构复杂,运算速度慢

    查看全部
  • 浮点数的精度问题

    查看全部
  • public用来指定公有成员。一个类的公有成员在任何地方都可以被访问

    private用来指定私有成员。一个类的私有成员,无论是成员变量还是成员函数,都只能在该类的内部才能被访问。

    protected用来指定保护成员。一般是允许在子类中访问。

    查看全部
  • 计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。

    我们现在有一个整数514:。用16进制表示是0x0202,然后我们吧这个整数拆分成两个字节,第一个字节为0000 0010,第二个字节为0000 0010。

    现在大部分的机器,都采用了小端字节序。但是在IO方面,则大部分使用大端字节序。例如:你要使用网络发送一个int类型的变量,要先把int转换成大端字节序,然后通过网络发送。

    大端字节序又被称之为网络细节序。

    查看全部
  • 在 C++ 中,我们可以把一个类写到两个文件里面,一个是后缀为 .h 或者 .hpp 的头文件,一个是后缀为 .cpp 的实现文件。我们先在开发环境里新建一个类。输入类名是 Staff。

    可以看到 VS 为我们创建类两个文件,Staff.h 和 Staff.cpp。Staff.h 文件为定义,Staff.cpp 为实现。

    查看全部
  • 构造函数不能定义为虚函数

    查看全部
    0 采集 收起 来源:强者争霸

    2021-10-06

  • //将父类的析构函数定义为纯虚函数

    virtual ~Staff()=0;

    //即使将父类的析构函数定义为纯虚函数 仍必须给出定义

    Staff::~Staff(){}

    查看全部
    0 采集 收起 来源:强者争霸

    2021-10-06

  • 普通变量用  点  ,指针变量用 箭头

    查看全部
  • 定义一个类,最后要协写上;


    private 私有成员,只允许在类的内部使用。

    public 公有成员, 可以在任何一个地方使用。

    查看全部
  • 我们在函数中声明一个静态变量,它的作用域是函数内,但他不会随着函数结束而销毁,他会一直存在到程序结束。

    查看全部
  • 数组名就是一个指针 指向变量的首地址,修改变量的值 可以直接修改

    查看全部
  • 定义一个指针变量,指针变量记录的是地址;本题中定义指针变量指向整型变量a


    通过对指针变量的*引用 的赋值,来修改变量a 的值。

    查看全部
  • sasaas as   

    查看全部
  • bbbbb

    查看全部
首页上一页12345下一页尾页

举报

0/150
提交
取消
课程须知
你需要具备基础的 C++ 语法知识,在学习本课程之前,建议先学习《趣味 C++ 入门》,快速认识 C++,熟悉 C++ 基本语法,更加快速入手进阶课程!
老师告诉你能学到什么?
在本门课程中,你将学习到:计算机存储数据的原理、指针的进阶、面向对象编程、内存管理技巧等 C++ 高级语法。在课程的最后,将带领大家使用 C++ 编写一个五子棋游戏,通过实践,加深理解,巩固学习成果。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!