memomemo

asしかやった事ない私がつまずいたとこメモです。なんか間違ってたらコメントください。

operator

operator は 演算内容を指示する記号などのこと。
演算の対象となる値や変数は operand という。

operatorで出来る事は

演算子オーバーロード

演算子 +とか=を書き換えれる。
cocosのPointの中↓

Point& Point::operator= (const Point& other)
{
    setPoint(other.x, other.y);
    return *this;
}

Pointの= は中で来たotherをsetPointしてあげてる。

pointA = pointB; は ↑が呼び出される

型変換演算子

operator hoge型() const
hoge型に変換できるようになる。

ただこれだと、引数にhoge型のものに渡すと、暗黙的に変換されてしまう。
explicitをつけると暗黙ではされなくなる。
explicitのついたものを型変換するには
static_cast(a);

//layer.hファイル
explicit operator cocos2d::Layer*() const;

//layer.cppファイル
layer::operator cocos2d::Layer*() const
{
  return static_cast<cocos2d::Layer*>(this->node_);
}

読み取り専用のインスタンスでも使えるように const を付けておく。