AI编程助手
AI免费问答

【C++】深入了解继承方式基础知识及其与访问限定符的关系

php是最好的语言   2018-07-30 11:32   3072浏览 原创

继承方式和访问限定符的关系

三种继承方式:

  1. 公有继承

  2. 私有继承

  3. 保护继承

关系:若基类的成员函数为私有,则派生类对基类的私有成员是不可见的,其他的标准为选范围小的为最终访问限定。

保护成员限定符:一些基类成员不想被基类的对象直接访问,但需要在派生类中才能访问,就定义为保护成员。保护成员限定符是因继承才出现的。

理解隐藏

隐藏是指派生类的函数屏蔽了与其同名的基类函数。规则如下:

  1. 如果派生类的函数与基类的函数同名,但是参数不同,此时,不论有无virtual关键字,基类的函数将被隐藏。

  2. 如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字,此时,基类的函数被隐藏。

派生类的默认成员函数

在派生类中如果没有显示定义一下六个默认成员函数,编译系统会默认合成这六个成员函数。

  1. 构造函数

  2. 拷贝构造函数

  3. 析构函数

  4. 赋值操作符重载

  5. 取地址操作符重载

  6. const修饰的取地址操作符重载

#include<iostream>
using namespace std;
class person{
  public:
    person(const char* name)
      :_name(name)
    {
      cout<p> 菱形继承</p>
<p><img src="https://img.php.cn//upload/image/112/137/523/1532921154774518.png?x-oss-process=image/resize,p_40" title="1532921154774518.png" alt="1.png"></p>
<p>菱形继承存在二义性以及数据冗余问题。</p>
<p>例,下图中继承的数据为两份,各不相同:</p>
<p><img src="https://img.php.cn//upload/image/175/505/834/1532921172254469.png?x-oss-process=image/resize,p_40" title="1532921172254469.png" alt="2.png"></p>
<p>解决方法:虚继承</p>
<p>在菱形的第二层添加virtual</p>
<p>例:</p>
<p><img src="https://img.php.cn//upload/image/937/969/452/1532921192746616.png?x-oss-process=image/resize,p_40" title="1532921192746616.png" alt="3.png"></p>
<p> 相关文章:</p>
<p><a href="http://www.php.cn/csharp-article-351041.html" target="_self">C#拾遗之小知识(四):继承</a></p>
<p><a href="http://www.php.cn/csharp-article-351492.html" target="_self">C#基础知识整理:基础知识(2) 类</a></p>
<p>相关视频:</p>
<p><a href="http://www.php.cn/course/694.html" target="_self">千锋C语言基础视频教程</a></p></iostream>

C++免费学习笔记(深入):立即学习
>在学习笔记中,你将探索 C++ 的入门与实战技巧!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。