今天面试同样被问到的一个问题,C与C++的区别.
我的回答如下:
C是面向过程,C++是面向对象。
C++里有函数重载,C中没有函数重载。
C++是面向对象的,有重载 继承 多态三种特性
然后面试官问我多态的用处,坦率的讲我所理解的多态如下:
class animal
{
virtual void speak();
}
class dog:public animal
{
void speak()
{
cout<<"旺旺"<<endl;
}
}
我所理解的多态就是
dog d;
animal *ptr=&d;
ptr->speak()//这个时候输出旺旺
面试时我说多态是比如基类指针指向子类对象,调用基类virtual函数时实际调用子类覆盖的虚函数。
然后面试官问,有没有一种情况下,没有多态的话你就实现不了某种功能的情况呢?
坦率的讲,对于多态我真的只有上面的一点肤浅的理解,我先搜搜相关内容,欢迎各位在此讨论,问题已加粗。
google搜下便有答案: https://www.quora.com/Whats-the-difference-between-C-and-C++
对于第二个问题: 如果多态指的是技术,答案是没有,因为从技术上看,面向对象只是面向过程的语法糖;如果指思想,答案是有,没有多态的思想,许多接口设计会寸步难行。