【面试】C++继承问题集锦

来源:互联网 发布:方舟生存进化最终优化 编辑:程序博客网 时间:2024/06/05 22:51

继承的概念

答:继承是面向对象的三大特性之一,继承是指一个对象直接使用另一对象的属性和方法。
  继承可以使子类具有父类的各种属性和方法。
  继承的主要目的是实现代码的重用。

派生类与基类的转换

答:

  • 派生类总是可以转换为基类的引用类型。
  • 基类转换为派生类要在确认安全的条件下,使用强制转换来进行。

有哪几种继承方式

答: 继承的方式分为公有继承public,保护继承protected和私有继承private。他们分别表示不同的访问权限。
(面试时可加答实现继承和接口继承)

继承时访问级别如何变化

答:在C++中有public,protected和private三种继承访问级别。
  子类继承的时候,通过声明为protected或private可以降低父类访问级别。
补充知识点:
  public:基类成员保持自己的访问级别
  protected:基类的public和protected成员在派生类中为protected成员。基类的private成员年保持为private。
  private:基类的所有成员在派生类中为private成员。

什么时候发生函数覆盖

答:覆盖在继承时派生类对于抽象类或者接口声明的方法具体实现时使用。
补充知识点:
  覆盖是指派生类中如果存在重新定义的函数,其函数名、参数列表,返回值类型必须同父类中的相对应被覆盖的函数严格一致。
  覆盖函数和被覆盖函数只有函数体不同,当派生类对象调用子类中该同名函数时会自动调用子类中的覆盖版本,而不是父类中的被覆盖版本。
  覆盖的特征为:
  
- 在不同类域中
- 函数名字相同
- 函数参数相同
- 基类函数必须有virtual关键字

私有继承和组合有什么相同点和不通点

答: 相同点:都表示“有一个”的关系
  不同点:私有继承中派生类能访问基类的protected成员,并且可以重写基类的虚函数,组合不具有这些功能。

为什么需要多重继承,他的优缺点是什么

答:为了解决实际生活中一些事物往往拥有两个或两个以上事物的属性。
  多重继承的优点:对象可以调用多个基类的接口
  多重继承的缺点:容易出现继承向上的二义性。即出现菱形继承导致的二义性。

多重继承中的二义性如何解决

答:两个解决方案:
- 加上全局符号确定调用哪一份拷贝
- 使用虚拟继承

0 0