起因是群里有人问:
2,3,4是为什么。
解答:
2:2是因为B中的show(A)才是多态,A a2=new B(),此时a2只有show(A)的多态,而面对的类型切割问题,在编译的时候派生类会将基类的多态的函数隐藏掉,所以指向的肯定是派生类的函数
3:首先它先不隐式转换去A和B的重载里面寻找,优先级B>A。但是在B里面找不到,所以匹配到A里面,因为不隐式转换比隐式转换的优先级高
4:4的时候B中的show(B)和show(A)都可以,但是B离D更近
我查了好多资料,终于搞懂了,其实很简单,刚开始大意了,没有闪
对了,因为JAVA是拿CPP写到,它的多态和CPP差不多
标签:转换,show,继承,多态,c++,a2,CPP,隐式 From: https://www.cnblogs.com/yanzhao-x/p/17151041.html