子类父类中同名函数问题,请教
在子类父类中出现同名函数(比如:show()),当在main()函数中调用show()时,起作用的是子类中的show()函数,请问这时这么理解对不:是子类中的show()把父类中的show()覆盖?如果不对是什么处理方式?
[解决办法]
看new的是哪个, 也不是覆盖
[解决办法]
虚函数那么是覆写,非虚函数那么就是隐藏或者说屏蔽
[解决办法]
如果基类里的show是virtual ,就是覆盖(同名,参数相同的情况)
否则是隐藏 可以用基类的指针访问基类的show方法
[解决办法]
以子类实例/子类指针调用子类函数情况下
不同参数列表:子类隐藏父类同名函数
同参数列表:子类覆盖父类同名函数
以父类指针调用子类实例情况下:
非虚函数:调用父类函数
虚函数:调用子类函数
[解决办法]
是隐藏不是覆盖。可以使用类作用域运算符调用父类的函数。在虚函数中才是覆盖,因为在虚表中子类的函数与父类的函数在相同的slot中,所以把父类中的virtual函数覆盖了。