面试知识点总结——对C++面向对象的理解

C++面向对象的特性可以总结为:封装、继承和多态。这也是大多数教材中提到的C++的三大特性。

  • 封装:
    封装就是讲程序模块化,对象化,把具体事物的特性属性和通过这些属性来实现一些动作的具体方法放在一个类中。对象是封装的最基本单位。属性用变量定义,行为用方法定义,方法可以直接访问同一个对象中的属性。

  • 继承:
    继承是子类自动共享父类数据和方法的机制。父类的相关属性,可以被子类重复使用,而对于自类中需要用到的新的属性和方法,子类可以自己扩展。

  • 多态:
    多态包含了重载和重写。
    重写(覆盖,一般发生在父类和子类中)就是把子类从父类里继承下来的方法重写一遍,这样父类里相同的方法就被覆盖了;
    重载(发生在同一个类中)相同方法名,不同形参,返回值相同
    多态可以简单地理解为“一个接口,多种方法”,程序在运行时才决定调用的函数,C++多态性时通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法成为覆盖或重写,只有重写了虚函数才算体现出C++多态性

本身区别重载和覆盖并不算困难,但是C++的隐藏规则使得问题复杂度升高,隐藏是指派生类的函数屏蔽了与其同名的基类函数
- 如果派生类中的函数与基类的函数同名,但是参数不同,此时,无论有无virtual关键字,基类的函数都将被隐藏;
- 如果派生类中的函数与基类函数同名,且参数也相同,但是基类函数没有virtual关键字,此时基类的函数被隐藏

猜你喜欢

转载自blog.csdn.net/caoyangxiaoyao/article/details/81180645
今日推荐