资讯专栏INFORMATION COLUMN

C++之重载运算符

spademan / 876人阅读

摘要:在随处可见重载运算,目前正处于学习中,谨以此记录。重载函数通常用来命名一些功能相似的函数,这样可减少函数命名的数量,避免命名空间的混乱不堪。实例,对运算符重载对运算符的重载定义如下其中表示返回类型,是要重载的运算符号,小括号内的为参数列表。

在C++随处可见operator重载运算,目前正处于学习C++中,谨以此记录。

什么是函数重载

函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这样的函数称为重载函数。重载函数通常用来命名一些功能相似的函数,这样可减少函数命名的数量,避免命名空间的混乱不堪。

函数重载的作用

不言而喻, 不仅可以节省宝贵的命名空间,而且可以使得同一个函数实现多种不同功能。

实例,对运算符重载

对运算符的重载定义如下:
Box operator+(const Box &); 其中Box表示返回类型,+是要重载的运算符号,小括号内的为参数列表。

#include 
using namespace std;

class complex {
private:
        double real;
        double image;

public:
        complex():real(0.0),image(0.0) {};
        complex(double a,double b):real(a),image(b){};
        friend complex operator+(const complex &A,const complex &B);
        friend complex operator-(const complex &A,const complex &B);
        friend istream & operator>>(istream &in,complex &A);
        friend ostream & operator<<(ostream &out,complex &A);
};

//重载加法运算符
complex operator+(const complex &A,const complex &B)
{
        complex C;
        C.real = A.real + B.real;
        C.image = A.image + B.image;
        
        return C;
}

//重载减法
complex operator-(const complex &A,const complex &B)
{
        complex C;
        C.real = A.real - B.real;
        C.image = A.image - B.image;
        return C;
}
  
//重载输入
istream &operator>>(istream &in,complex &A)
{
        in>>A.real>>A.image;
        return in;
}
ostream & operator << (ostream &out, complex &A) //如果没有重载,就不会输入复数的
{
        out << A.real<<"+"<>c1>>c2;

        c3 = c1 + c2;
        cout<<"c1 + c2="<

上面的重载运算符实现了复数的加减和输入输出功能。

再来看一个更好玩的(引自实验室“扫地僧”)

#include 
using namespace std;

class boss {
public:
        boss(const char *str) {info = str;}
        boss(string s) {info = s;}
        boss operator+(const boss &b) {
                if (!info.compare("习大") && !b.info.compare("奥黑")) {
                        return boss("安倍好捉急!");
                } else {
                        return boss(this->info + b.info);
                }
        }
public:  //注意:这里为public成员,所以"operator<<"不必声明为类的友元函数
        string info;
};

ostream & operator<<(ostream &os, const boss &b) {
        os << b.info << endl;
        return os;
}

int main(void)
{
        boss xi_da("习大");
        boss ao_hei("奥黑");
        cout << xi_da + ao_hei << endl;
        return 0;
}

如果运行上面的程序,它会输出安倍好捉急,是不是很有意思!

总结

函数重载或是运算符重载的出现,可以使得自己定制个性化的程序,并能使得同样函数名的程序实现不同的功能,总之,它的出现为人类进步做出了巨大贡献,感谢开发者!

一些相关链接:
http://www.runoob.com/cpluspl...
C语言中文网
吴秦的博客

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/9466.html

相关文章

  • C++新经典课程学习笔记第三章-3.14小节

    摘要:本博客将记录新经典课程知识点的第节的笔记今天我们将学习对象的移动移动构造函数移动赋值运算符函数。然后,确保移动后原对象处于一种即便被销毁也没有什么问题的这样一种状态。  本博客将记录:新经典课程知识点的第14节的笔记!    今天我们将学习 对象的移动、移动构造函数、移动赋值运算符函数。 今...

    lijy91 评论0 收藏0
  • [初识C++] 何为最:心酸历史

    摘要:上面需要了解的是这俩个版本都是破蛹成蝶的版本世界挑战榜咋才前三还没挤进去呀,你想想世界上有几千中编程语言,在其中脱颖出来,可以说是天之娇子,凤毛麟角了。支持正版图灵上面买吧,如果没钱买盗版吧学完以后买本正版支持一下,创作不易是吧 ...

    forrest23 评论0 收藏0
  • C++学习资料和视频

    摘要:博主在公众号后台设置了关键字回复,回复下面的里面的内容,可免费获得学习视频和资料。 博主在公众号后台设置了关键字回复, 回复下面的【】里面的内容, 可免费获得C++学习视频和资料。 如回复:C++基础                                    【C++】 【1】...

    wangshijun 评论0 收藏0
  • C++类和对象(万字总结)(建议收藏!!!)

    摘要:当你用该日期类创建一个对象时,编译器会自动调用该构造函数对新创建的变量进行初始化。注意构造函数的主要任务并不是开空间创建对象,而是初始化对象。编译器对内置类型使用默认构造函数时,对其成员赋的是随机值。 ...

    masturbator 评论0 收藏0
  • 系统地学习C++

    摘要:本书主要围绕一系列逐渐复杂的程序问题,以及用以解决这些问题的语言特性展开讲解。你不只学到的函数和结构,也会学习到它们的设计目的和基本原理。因此我们把精力集中在最有价值的地方。本书不仅是对模板的权威解释,而且本书还深入地介绍了其他一般的思想。 C++ 入门教程(41课时) - 阿里云大学 C+...

    joyqi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<