0

このタイプの関数がどのように機能し、どのように使用するかを理解しようとしています。

テストと呼ぶクラスがあると思います。

class Test {

}

このタイプの関数をヘッダーファイルで見ましたが、それが何をするのかを理解しようとしています。そしてそれを正しく使う方法。

Test& testFunction();

ヘルプに感謝します。

4

1 に答える 1

2

関数名の前にあるのは、関数が返す型です。この場合、testFunctionTestオブジェクトを返します。この&場合の (参照) は、参照を返すことを意味し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次の呼び出しでオブジェクトが失われるため、一度だけ変更されます。

于 2012-12-13T17:35:38.080 に答える