当全局函数在局部变量c++的作用域中调用时,全局变量优先于局部变量



我只是想澄清我的知识差距。

给定以下代码:

我本以为";嗨"完全基于以下事实:在foo的范围内,FuncA的定义被覆盖,因此应该被调用。如图所示,情况并非如此https://onlinegdb.com/LzPbpFN3R

有人能解释一下这里发生了什么吗?

std::function<void()> FuncA;
void FuncB() {
if (FuncA) {
FuncA();
}
}
struct Foo {
void FuncA() {
std::cout << "Hi";
}

void FuncC() {
FuncB();
}
};
int main()
{
Foo foo{};

foo.FuncC();

return 0;
}

一旦调用了一个自由函数,就不再在类中。您丢失了特殊的this指针。一种(相当C的(方式可能是:

void FuncB(struct Foo* a) {   // expect a pointer to a Foo object
a->FuncA();               // call the method on the passed object
}
struct Foo {
void FuncA() {
std::cout << "Hi";
}

void FuncC() {
FuncB(this);         // pass the special this pointer to the function
}
};

相关内容

  • 没有找到相关文章

最新更新