成員函數有一個隱含的指針參數this
。爲什麼std::function
接受這個簽名,那麼,S是一個簡單的類嗎? (complete sample)爲什麼std :: function在簽名中接受這個引用?
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'獨立於原始函數指針並且有能力做它喜歡的事情來增加它所包裝的東西的可用性時,它會更有意義。 – chris