c++虚函数:为什么在编译的时候不知道调用哪个类对象的虚函数而到运行的时候就知道了呢?怎么知道的?书

2025-02-26 11:29:47
推荐回答(3个)
回答1:

其实所有的编程问题都可以用生活中的例子去解释
编程本身就是为了解决生活中的各种问题与困难

这个就好像你在手机里存通讯录一样,一个联系人
可以有家庭电话,公司电话,手提电话我们把电话
注册在通讯录里,等到我要打电话的时候我一定是
决定好了打哪个电话,相应的那个号码就会被我提取

c++编译器在编译的时候把重写的函数注册就好比存号码
c++在执行的时候你一定会给它传递一个标记告诉他去查
注册中的哪个函数,就好比打电话

回答2:

要了解C++通过虚函数实现的多态,就需要了解“虚函数表”。
实际上在C++一个对象中,保存了一张表,这张表真实保存了虚函数的地址。
简单地说,当一个父类指针指向一个子类对象时,这个指针中的虚函数表中的函数实际上是派生类的函数,是不是很绕啊?
给你个链接看看吧

回答3:

它是利用函数指针实现的。

在基类中内部定义了一个函数指针,指向那个虚函数,调用的时候就是直接用该函数指针做的。
当子类继承基类时,如果在定义了那个虚函数,就会自动用子类的函数赋值该函数指针。