Boolan-1-5 操作符重载

  1. 操作符重载实现为类成员函数
    重载的操作符在类体中被声明,声明方式如同普通成员函数一样,只不过他的名字包含关键字operator,以及紧跟其后的一个c++预定义的操作符。
    可以用如下的方式来声明一个预定义的==操作符:
    class person{
    private:
    int age;
    public:
    person(int a){
    this->age=a;
    }
    inline bool operator == (const person &ps) const;
    };
    实现方式如下:
    inline bool person::operator==(const person &ps) const
    {

    if (this->age==ps.age)
    return true;
    return false;
    }
    调用方式如下:

include

using namespace std;
int main()
{

person p1(10);
person p2(20);
if(p1==p2) cout<<”the age is equal!”< return 0;
}
这里,因为operator ==是class person的一个成员函数,所以对象p1,p2都可以调用该函数,上面的if语句中,相当于p1调用函数==,把p2作为该函数的一个参数传递给该函数,从而实现了两个对象的比较。

  1. 操作符重载实现为非类成员函数(全局函数)
    对于全局重载操作符,代表左操作数的参数必须被显式指定。例如:

include

include

using namespace std;
class person
{
public:
int age;
public:
};

bool operator==(person const &p1 ,person const & p2)

//满足要求,做操作数的类型被显示指定
{
if(p1.age==p2.age)
return true;
return false;
}
int main()
{
person rose;
person jack;
rose.age=18;
jack.age=23;
if(rose==jack)
cout<<"ok"< return 0;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • C++运算符重载-下篇 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符和二元逻辑运算符4...
    Haley_2013阅读 1,459评论 0 49
  • C++运算符重载-上篇 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符和二元逻辑运算符4...
    Haley_2013阅读 2,318评论 0 51
  • 2014年的苹果全球开发者大会(WWDC),当Craig Federighi向全世界宣布“We have new ...
    yeshenlong520阅读 2,311评论 0 9
  • 世界围着他 -————一个无理取闹的一年级小孩 阳光明媚照着他, 微风轻轻吹着他, 白云朵朵托着他, 小...
    奔跑的马齿苋阅读 267评论 0 0
  • 刚才看了如何说话,很多时候我们很在乎别人的看法,其实是关注自我的表现。与在意别人的情感和感受是完全不同的。 ...
    eecbe00b20fc阅读 964评论 0 0