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

互联网 18-7-30
继承方式和访问限定符的关系

三种继承方式:

  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<<"person()"<<endl;     }     person(const person& p){       cout<<"person(const person& p)"<<endl;     }     person& operator=(const person& p){       cout<<"person& operator=(const person& p)"<<endl;       if(this!=&p){         _name=p._name;       }       return *this;     }     ~person(){      cout<<"~person()"<<endl;      }   protected:     string _name; }; class student:public person{   public:     student(const char* name,int num)       :person(name)        ,_num(num){          cout<<"student()"<<endl;        }     student(const student& s)       :person(s)        ,_num(s._num)     {       cout<<"student(const student& s)"<<endl;     }     student& operator=(const student& s){       cout<<"student& operator=(const student& p)"<<endl;       if(this!=&s){         person::operator=(s);//必须指定域,否则会死循环         _num=s._num;       }       return *this;     }     ~student(){//析构的时候先清理子类,再清理父类,不需要显示的调用       cout<<"~student()"<<endl;     }   private:     int _num; }; int main(){   student s1("jack",18);   student s2(s1);   student s3("rose",16);   s1=s3; }

菱形继承

菱形继承存在二义性以及数据冗余问题。

例,下图中继承的数据为两份,各不相同:

解决方法:虚继承

在菱形的第二层添加virtual

例:

相关文章:

C#拾遗之小知识(四):继承

C#基础知识整理:基础知识(2) 类

相关视频:

千锋C语言基础视频教程

以上就是【C++】深入了解继承方式基础知识及其与访问限定符的关系的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 继承方式 C++
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:深入理解C#设计模式之策略模式 角色具体案例分享

相关资讯