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函数时实际调用子类覆盖的虚函数。
然后面试官问,有没有一种情况下,没有多态的话你就实现不了某种功能的情况呢?
坦率的讲,对于多态我真的只有上面的一点肤浅的理解,我先搜搜相关内容,欢迎各位在此讨论,问题已加粗。
面向对象三个基本特征:封装,继承,多态。
多态性相对于前二者而言是最灵活的,也是面向对象比较核心的部分。
但针对面试官的问题:没有多态就不能实现某种功能的情况,答案是否定的。
很多重要的系统及应用,考虑到性能及开发流程,使用机构化语言(C)的更多。
只能说,使用了多态,能让某些功能的实现看起来更“优雅”。
当年C++的作者劝说UNIX的作者用C++编写系统时,后者只是微笑沉默拒绝。这其中有自己的哲学。