このタイプの関数がどのように機能し、どのように使用するかを理解しようとしています。
テストと呼ぶクラスがあると思います。
class Test {
}
このタイプの関数をヘッダーファイルで見ましたが、それが何をするのかを理解しようとしています。そしてそれを正しく使う方法。
Test& testFunction();
ヘルプに感謝します。
関数名の前にあるのは、関数が返す型です。この場合、testFunction
はTest
オブジェクトを返します。この&
場合の (参照) は、参照を返すことを意味しTest
ます。これは、関数を呼び出したときに返されたオブジェクトを変更する場合に重要です。または、「値による戻り」では不可能な方法で使用します。
あなたのコードは、戻り値で何をしようとしているのかについてあまり教えてくれませんが、非常に一般的に使用される良い例を次に示します。
Test & T::f() {
// do something
return *this;
}
*this
これは、そのメソッド.f
が呼び出されている実際のオブジェクトです。ここで特別なのは、参照を返すため、元のオブジェクトを維持しながら呼び出しを連鎖できることです。毎回*this
同じになります。*this
値渡しでは、これを行うことができません。例えば:
Test & T::f() {
this->x++;
return *this;
}
int main() {
Test t;
t.x = 5;
t.f().f();
std::cout << t.x; // 7 as we expect
}
Test T::f() { ... } // notice the omission of &
int main() {
Test t;
t.x = 5;
t.f().f();
std::cout << t.x; // 6
}
t
次の呼び出しでオブジェクトが失われるため、一度だけ変更されます。