这个结构意味着什么:bool operator ==(const a& other)const;?

时间:2013-04-30 14:27:30

标签: c++ syntax struct operators

我有一个以下列方式定义的结构:

struct struct_name
{
    int x;
    region y;

    bool operator == (const struct_name& other) const;
};

我不明白结构体内的最后一行。它做了什么?

2 个答案:

答案 0 :(得分:6)

为此operator==声明struct。此运算符将允许您以直观的方式比较struct对象:

struct_name a;
struct_name b;
if( a == b )
// ...

bool operator == (const struct_name& other) const;
^^^^              ^^^^^............^        ^^^^^-- the method is `const` 1
^^^^              ^^^^^............^
^^^^              ^^^^^............^--- the `other` is passed as const reference
^^^^
^^^^-- normally, return true, if `*this` is the same as `other`

1 - 这意味着该方法不会更改任何成员


编辑:请注意,在C++中,classstruct之间的唯一区别是默认访问和默认的继承类型(以@表示) AlokSave) - public的{​​{1}}和struct的{​​{1}}。

答案 1 :(得分:3)

它声明了一个函数。函数的名称为operator==。它返回bool并采用类型为const struct_name&的单个参数。该行中的最后const表示它是一个const成员函数,这意味着它不会修改它所调用的struct_name对象的状态。

这称为operator overloading