次の方法で定義された構造があります。
struct struct_name
{
int x;
region y;
bool operator == (const struct_name& other) const;
};
構造体の本体の最後の行がわかりません。それは何をするためのものか?
これを宣言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 であることに注意してください。class
struct
public
struct
private
class
関数を宣言します。関数の名前はoperator==
. bool
type の単一の引数を返し、受け取りますconst struct_name&
。行の最後の行は、それが const メンバー関数であることを示しています。これは、呼び出されたオブジェクトconst
の状態を変更しないことを意味します。struct_name
これは、演算子のオーバーロードとして知られています。