gpt4 book ai didi

c++ - 何时将 this 用于 lambda 中的类函数

转载 作者:行者123 更新时间:2023-11-30 03:18:39 24 4
gpt4 key购买 nike

什么时候应该在 lambda 中使用 this 来调用类成员函数?我在下面有一个示例,其中调用 hello(); 时没有使用 thisthis->goodbye(); 会:

#include <iostream>

class A
{
void hello() { std::cout << "hello" << std::endl; }
void goodbye() { std::cout << "goodbye" << std::endl; }

public:
void greet()
{
auto hi = [this] () { hello(); }; // Don't need this.
auto bye = [this] () { this->goodbye(); }; // Using this.

hi();
bye();
}
};


int main()
{
A a;
a.greet();
return 0;
}

一种方式比另一种方式有什么优势吗?

编辑:hello 的 lambda 不捕获任何内容,但它继承了类作用域中存在的函数。它不能为成员做到这一点,为什么它可以为功能做到这一点?

最佳答案

this 更明确也更冗长。

但隐藏成员(捕获或参数)的变量也可能需要它:

auto goodbye = [](){}; // Hide method
auto bye = [=] (int hello) {
this->goodbye(); // call method
goodbye(); // call above lambda.
this->hello(); // call method
std::cout << 2 * hello; // show int parameter.
};

关于c++ - 何时将 this 用于 lambda 中的类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54527169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com