C++重载,隐藏,覆盖的区别

2025-04-29 05:29:48
推荐回答(1个)
回答1:

其实你说的基类指针和派生类指针的问题,本质是virtual的影响。
对于标识为virtual的函数,其函数列表会被派生类更新,所以不管使用哪种调用方式都会是子类的方法。
对于非virtual的函数,其函数列表不会被更新,仅仅是添加了新的函数。在子类调用时,由于后添加的将原来的隐藏了,所以是调用子类的方法;而如果使用父类指针调用,由于在父类的函数列表中是没有子类的函数的,所以就变成了父类的函数。
至于重载,它是指相同的方法名称却有不同的调用参数(据说有的语言可以支持返回类型的重载)。