0

我试图了解这种类型的功能是如何工作的以及你将如何使用它。

我假设有一些课程我们称之为测试。

class Test {

}

我在头文件中看到了这种类型的函数,我试图弄清楚它的作用。以及如何正确使用它。

Test& testFunction();

感谢帮助。

4

1 回答 1

2

函数名前面是函数将返回的类型。在这种情况下,testFunction返回一个Test对象。在&这种情况下 (reference) 意味着它将返回一个Test-reference。如果您希望在调用函数时修改返回的对象,这一点很重要。或者以“按值返回”不可能的方式使用它。

您的代码并没有告诉我们太多关于您将如何处理返回值,但这里有一个非常常用的很好的例子:

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 回答