c++多态常见面试题

1.什么是多态?

完成某种行为时不同的对象去完成会产生不同的状态。举个例子:买票时普通人全价,学生半价就是常见的多态。

2.什么是重载,重写,重定义(隐藏)?

重载就是两个或多个函数函数名,返回值相同,而参数列表不同包括参数的顺序不同,类型不同,个数不同,但是当参数列表相同而返回值不同时是不能构成重载的。

c++多态常见面试题_第1张图片

重写就是当子类对父类的virtual函数重新定义,函数的参数列表,返回值,接口(public,private,protece)全部继承父类,通过父类指针调用函数时会根据对象的不同来调用不同的函数。

c++多态常见面试题_第2张图片

重定义就是子类中拥有一个与父类中函数名相同,参数列表相同,返回值相同的函数,会编译器会将父类的函数隐藏,可以用作用域符号::调用父类的函数。特别注意:隐藏不会根据父类指针指向对象的不同去调用不同的函数。

c++多态常见面试题_第3张图片

3.多态的原理

4.inline函数,static成员函数可以是虚函数吗?

5.析构函数可以是虚函数吗,什么情况下是?

 可以看我的另一篇文章。

c++多态_拒绝躺平@的博客-CSDN博客

6.构造函数可以是虚函数吗?

不能,虚函数表指针是在构造函数初始化列表时才初始化的。

7.对象访问普通函数快,还是虚函数快?

特别注意:普通函数不一定都比虚函数快。普通对象调用普通函数和虚函数是一样快的,只有指针或者引用对象在调用虚函数时构成多态需要从虚函数表中查找,此时普通函数快。

8.虚函数表在什么时候生成,存在哪里?

虚函数表是在编译阶段就生成的,一般情况下存在代码段( 常量区 ) 的。

你可能感兴趣的:(c++,c++,开发语言)