我试图查看虚函数是在编译期间确定还是在运行时确定。 在寻找时我发现了一些动态链接/后期绑定(bind) 但我不明白这是否意味着函数本身在可执行文件之前或可执行文件的编译过程中确定。
有人可以解释一下吗?
最佳答案
对于虚函数,解析是在运行时完成的。当你有一个对象的实例时,只有在程序运行时才知道调用哪个方法的分辨率,因为只有在运行时你才知道这个实例的确切类型。对于非虚函数,这个解析可以在编译时完成,因为已知只能调用这个方法,并且不能有子类覆盖它。这也是为什么虚拟方法调用有点慢(绝对可以忽略不计但比非虚拟方法调用慢)。 This article更详细地解释了这个概念。
关于c++ - 虚函数是在编译期间确定的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3646715/