1

私はこの方法を問題なく使用していますが、これが完全に許可されている方法なのか、それとも運が良かっただけなのかを確認したいと思います!

class A
{
public:
    void bar()
    {
        foo(*this);
    }
};

void foo(A &a)
{

}

ありがとうございました

4

4 に答える 4

4

はい、許可されています。*thisconst メソッドからは、 const パラメーターを受け入れる関数にのみ渡すことができることに注意してください。

class B;

void foo(B&);
void bar(B const&);

class B {
  void meow() const {
    bar(*this); //OK
    foo(*this); //ERROR
  }
};
于 2013-07-15T10:46:03.450 に答える
1

はい、完全に合法です。return *this;これは、いくつかの演算子 (代入演算子など)を記述するときに行うことです。

于 2013-07-15T10:46:03.503 に答える
1

これはまったく問題なく、「このオブジェクトについて他の関数またはオブジェクトに知らせたい」という一般的なパターンです。

渡されたものの有効期間を超えて参照が保存されていないことを確認してください。

于 2013-07-15T10:47:14.093 に答える