近几次面试中,由于简历上写了熟悉java,了解C++语言。面试官都问到了一个问题——为什么C++支持多继承,Java不支持呢?
Java在面向对象的特性上与C++有很多相似的地方。比如继承、对象等等。但他又省去了一些很令人头疼的东西,比如指针、多重继承。至于为什么不支持多重继承,这里面涉及到很著名的菱形继承问题。
简单来说:我们有两个类B和C继承自A.假设B和C都重写继承的方法,他们提供自己的实现。现在B和C从D继承多重继承。D应该继承,重写的方法,将用于重写的方法吗?它从B或C?在这里,我们有歧义。在C++中我们可能会掉入这个陷阱,但是它同样有自己的机制去解决这个问题。那就是使用虚继承。https://blog.csdn.net/tounaobun/article/details/8443228 使得在编译的或城中只产生一个基类。
讲的很好。
https://blog.csdn.net/tounaobun/article/details/8443228