C++封装;继承;多态在实际编程中体现在哪些方面?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013706540/article/details/82183670

一、封装:使得代码模块化

通过:类内成员变量、成员函数的可访问性来体现

可访问性 通过public、protected、private来限制。

二、继承:扩展已存在的代码,提高代码重用性

体现在基类与派生类之间。

关于继承的难点问题:

  • (1)公有继承、受保护继承、私有继承后,基类中的成员在派生类中的可访问性。
  • (2)多重继承中定义一个派生类对象后,如何为其分配内存(解答:逻辑上可以抽象成一个表格,顺序为:基类1中的虚表指针,其指向基类1中的虚函数;>>基类1中的数据成员;>>基类2中的虚表指针;>>基类2中的数据成员;>>...>>直到派生类数据成员。到此我们会发现一个问题:派生类中的虚函数排在哪呢?解答:在基类1的虚函数之后。由此我们可知:派生类指针与第一个基类指针所指的位置是相同哒
  • (3)派生类不继承基类中的哪些函数?(解答:构造函数、析构函数、拷贝构造函数;重载运算符;友元函数)

三、多态:目的是为了接口重用

C++多态性是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖(override),或者称为重写。(这里我觉得要补充,重写的话可以有两种,直接重写成员函数和重写虚函数,只有重写了虚函数的才能算作是体现了C++多态性

最常见的用法就是声明基类的指针,利用该指针指向任意一个子类对象,调用相应的虚函数,可以根据指向的子类的不同而实现不同的方法。如果没有使用虚函数的话,即没有利用C++多态性,则利用基类指针调用相应的函数的时候,将总被限制在基类函数本身,而无法调用到子类中被重写过的函数。

因为没有多态性,函数调用的地址将是一定的,而固定的地址将始终调用到同一个函数,这就无法实现一个接口,多种方法的目的了。

猜你喜欢

转载自blog.csdn.net/u013706540/article/details/82183670
今日推荐