C++如何确定该调用基类的虚函数还是派生类的?
4个回答
展开全部
昨天貌似说错了,如果是调用基类和派生类之间的虚函数,如果是直接通过对象来调用那就看是谁的对象,调用相应的虚函数就行了,如果是用指针或引用调用是根据指针本身来确定的(因为派生类是被看作基类的对象),就是说如果调用对象的指针或引用是被定义为基类类型的变量那么就会调用基类的虚函数,反之则是调用派生类的,当然这必须是基类和派生类都定义了这个虚函数,昨天说的“这得看你的指针所指向的对象是基类对象还是派生类对象,根据对象的不同调用对应的虚函数 ”这是在派生类之间才这样决定的(用基类的指针或引用调用派生类的对象时依据此原则)
展开全部
如果虚函数的话,区别在于引用和指针,是属于动态联编过程,因为基类的引用或是指针可以指向派生类,所以虚函数的作用在于,调用的是实际指向的对象的虚函数,
至于内在原理,就是在每个类中都有一个virtual function table 记录着类中的虚函数的地址,如果派生类中有新的虚函数那么vtbl中就会将旧的替换成新的,运行过程中,就会追踪这个指针,然后,调用相应的虚函数
至于内在原理,就是在每个类中都有一个virtual function table 记录着类中的虚函数的地址,如果派生类中有新的虚函数那么vtbl中就会将旧的替换成新的,运行过程中,就会追踪这个指针,然后,调用相应的虚函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先,虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数,所以,你可以根据指针来判断的,可以看看书上具体的代码来帮助你理解。
追问
你说的“引用”就是指对象调用吗?
追答
对,就是你先在主函数中有定义一个对象,然后在调用函数时,它的参数中用引用来实现,例如(&S1)这种语句。引用的性质和取地址的是差不多的,但很多情况下引用比用指针方便,不过,厉害的都比较喜欢用指针哦~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
取决于调用此函数的指针或者对象,是基类还是派生类。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询