0

次の方法で定義された構造があります。

struct struct_name
{
    int x;
    region y;

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

構造体の本体の最後の行がわかりません。それは何をするためのものか?

4

2 に答える 2

6

これを宣言operator==します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++の唯一の違いは、デフォルトのアクセスと継承のデフォルトのタイプ (@AlokSave で指摘) - forとfor であることに注意してください。classstructpublicstructprivateclass

于 2013-04-30T14:28:36.373 に答える
3

関数を宣言します。関数の名前はoperator==. booltype の単一の引数を返し、受け取りますconst struct_name&。行の最後の行は、それが const メンバー関数であることを示しています。これは、呼び出されたオブジェクトconstの状態を変更しないことを意味します。struct_name

これは、演算子のオーバーロードとして知られています。

于 2013-04-30T14:29:19.157 に答える