怎么做谷歌收录的网站,wordpress主题教程视频教程,如何做好企业推广,甘肃城乡建设部网站首页目的减少重复代码冗余
Class 子类(派生类) #xff1a; 继承方式 父类#xff08;基类#xff09;
继承方式共有三种#xff1a;公共、保护、私有 父类的私有成员private无论哪种继承方式都不可以被子类使用
保护protected权限的内容在类内是可以访问#xff0c;但是在…目的减少重复代码冗余
Class 子类(派生类) 继承方式 父类基类
继承方式共有三种公共、保护、私有 父类的私有成员private无论哪种继承方式都不可以被子类使用
保护protected权限的内容在类内是可以访问但是在类外访问不到
保护继承和私有继承的继承方式是并行的父类的非私有方式全变为保护/私有
子类所占用的内存空间要计算上父类的成员private也会被继承下去只是不可以访问
上述代码输出是16即打印子类的内存占用包括了ABCD四个成员的内容
关于 父类和子类的构造和析构顺序
调用子类时
父类构造函数 》》》》 子类构造函数 》》》》 子类析构函数 》》》》 父类析构函数 继承同名成员处理方式
访问子类同名成员 直接访问即可
访问父类同名成员 需要加父类作用域 如果子类中出现和父类同名的成员函数子类的同名成员会隐藏掉父类中所有同名成员函数即使父类中存在独有的函数重载也不能直接访问
如果想访问到父类中被隐藏的同名成员函数需要加作用域
继承同名静态成员的处理方式
与上述一致
访问子类同名成员 直接访问即可
访问父类同名成员 需要加父类作用域
与上面不同的是静态成员不属于任一对象除了可以通过对象访问还可以直接通过类名访问 总结: 同名静态成员处理方式和非静态处理方式一样只不过有两种访问的方式 (通过对象 和 通过类名)
多继承语法
允许一个类继承多个类但是开发过程中不建议使用多继承
多继承可能会引发父类中有同名成员出现需要加作用域区分
菱形继承
两个派生类继承同一个基类又有某个类同时继承者两个派生类 这种继承被称为菱形继承或者钻石继承 父类 ↙ ↘ 子类1 子类2 ↘ ↙ 子类3
当子类1继承了父类的数据子类2也继承了父类当子类3使用数据时会产生二义性
子类3继承来自父类的数据一共两次但是实际一次就可以
当菱形继承对于子类3 来说两个父类子类1和子类2拥有相同数据需要加以作用域区分.但是数据两份资源浪费
解决方案虚继承可以解决问题在两个子类子类1和子类2继承前加上关键字virtual变为虚继承父类成为虚基类
当发生虚继承时共同的数据变成了一份不会出现不明确的情况其值按照程序运行顺序取最后的赋值同时访问共同的数据可以不用在前面加作用域
即原来
子类3 zi3;
cout zi3.子类1:: ageendl;
cout zi3.子类2:: age endl;
现在用了虚继承:
cout zi3.age endl; //直接访问即可 注意需要在两个继承的子类(子类1和子类2)前面都要加上virtual关键字 其他继承
当继承的父类是一个模板时子类继承其必须要知道父类中的T类型