gpt4 book ai didi

c++ - 是否有可能在 C++ 中使用函数指针获得早期/静态绑定(bind)?如果是那么如何?

转载 作者:太空宇宙 更新时间:2023-11-04 14:59:11 25 4
gpt4 key购买 nike

在 C++ 中,获得后期/动态绑定(bind)的一种方法是使用函数指针,我们也可以使用虚函数。

但不知道早期/静态绑定(bind)。

最佳答案

您无法使用指针进行静态绑定(bind)。从技术上讲,它甚至没有“绑定(bind)”——它只是您需要在运行时调用的某个函数的地址。对于静态绑定(bind),编译器需要提前知道函数的地址,以便将其直接放入输出机器代码中,但指针的值(通常)直到运行时才知道。

如果编译器可以保证指针值是不变的,或者如果它可以在执行的特定点缩小指针的值,那么它可能会优化事情并静态绑定(bind)调用:

void foo() {
cerr << "foo!" << endl;
}


int main(int argc, char **argv) {
void (*f)() = &foo;
f(); // can statically bind here... but why use a pointer?
}

但这是一个玩具示例。如果编译器能够识别出您的指针始终指向同一个函数,那么就不得不怀疑您为什么要使用指针。

关于c++ - 是否有可能在 C++ 中使用函数指针获得早期/静态绑定(bind)?如果是那么如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1009326/

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