gpt4 book ai didi

c++ - 为什么 std::function 在签名中接受 this 引用?

转载 作者:可可西里 更新时间:2023-11-01 18:29:37 25 4
gpt4 key购买 nike

成员函数有一个隐含的this 指针参数。为什么 std::function 接受这个签名,那么,这里的 S 是一个简单的类? ( complete sample )

std::function<void(S &)> func = &S::foo;

调用它也可以,并且可以区分对象:

S s1 = {5};
S s2 = {6};

func(s1); //prints 5
func(s2); //prints 6

我通常期望的是它需要一个指针,它也能正常工作:( complete sample )

std::function<void(S * const)> func = &S::foo;

S s1 = {5};
S s2 = {6};

func(&s1); //prints 5
func(&s2); //prints 6

当隐式 this 参数是指针时,为什么当我将引用传递给成员函数时第一个有效?

最佳答案

因为 std::function 的设计是正确的。 this 是一个指针这一事实是历史上的偶然事件,也是成员函数内部的一个细节。这个事实应该不会影响功能用户的设计决策。

当签名中的第一个参数类型是引用时,std::function 的设计者正确地决定接受成员函数。

关于c++ - 为什么 std::function 在签名中接受 this 引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12523970/

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