当前位置: 首页 > news >正文

网站建设_网站制作公司_捷创宝安网页

网站建设_网站制作公司_捷创,宝安网页,WordPress分类打开404错误,网站图片如何优化9.1 多继承 9.1.1 概念 一个类有多个直接基类的继承关系称为多继承#xff08;多个父类#xff09;多继承声明语法 class 派生类名 : 访问控制 基类名1 , 访问控制 基类名2 , … , 访问控制 基类名n {数据成员和成员函数声明 }#xff1b;类 C 可以根据访问控制同时…9.1 多继承 9.1.1 概念 一个类有多个直接基类的继承关系称为多继承多个父类多继承声明语法 class 派生类名 : 访问控制 基类名1 , 访问控制 基类名2 , … , 访问控制 基类名n {数据成员和成员函数声明 }类 C 可以根据访问控制同时继承类 A 和类 B 的成员并添加自己的成员 9.1.2 多继承的派生类的构造和访问 多个基类的派生类构造函数可以用初始式调用基类构造函数初始化数据成员执行顺序与单继承构造函数情况类似。多个直接基类构造函数执行顺序取决于定派生类时指定的各个继承基类的顺序。 一个派生类对象拥有多个直接或间接基类的成员。不同名成员访问不会出现二义性。如果不同的基类有同名成员派生类对象访问时应该加以识别。 示例代码 #include iostreamusing namespace std;class Airplane { protected:int high; public:Airplane(){cout 飞机的构造函数 endl;high 100;}void show(){cout 飞行高度 high endl;} };class Ship { protected:int speed; public:Ship(){cout 轮船的构造函数 endl;speed 50;}void show(){cout 航行的速度 speed endl;} };class WaterPlane : public Ship, public Airplane //多继承 { public:WaterPlane(){cout 水上飞机的构造函数 endl;} };int main() {WaterPlane w; //先构造基类再构造派生类基类的构造顺序和继承顺序有关cout sizeof(w) endl;w.Airplane::show();w.Ship::show();return 0; }运行结果 9.1.3 多继承的二义性 如果一个派生类从多个基类派生而这些基类又有一个共同的基类则在对该基类中声明的名字进行访问时可能产生二义性。 示例代码 #include iostreamusing namespace std;class TestA { public:int a[100]; };class TestB : public TestA { public:int b; };class TestC : public TestA { public:int c; };class TestD : public TestB, public TestC { public:int d; };int main() {TestD td;cout sizeof(td) endl;cout td endl;cout td.TestB::a endl;cout td.b endl;cout td.TestC::a endl;cout td.c endl;cout td.d endl;return 0; }运行结果 9.1.4 虚继承 如果一个派生类从多个基类派生而这些基类又有一个共同的基类则在对该基类中声明的名字进行访问时可能产生二义性如果在多条继承路径上有一个公共的基类那么在继承路径的某处汇合点这个公共基类就会在派生类的对象中产生多个基类子对象要使这个公共基类在派生类中只产生一个子对象必须对这个基类声明为虚继承使这个基类成为虚基类。虚继承声明使用关键字 virtual 示例代码 #include iostreamusing namespace std;class TestA //虚基类 { public:int a; };class TestB : virtual public TestA { public:int b; };class TestC : virtual public TestA { public:int c; };class TestD : public TestB, public TestC { public:int d; };int main() {TestD td;cout sizeof(td) endl;cout ****** endl;TestB tb;cout sizeof(tb) endl;cout tb endl;cout tb.a endl;cout tb.b endl;cout ***** endl;cout td endl;cout td.a endl;cout td.b endl;cout td.c endl;cout td.d endl;return 0; }运行结果 9.2 C向上转型 9.2.1 将派生类对象赋值给基类对象 赋值的本质是将现有的数据写入已分配好的内存中对象的内存只包含了成员变量所以对象之间的赋值是成员变量的赋值成员函数不存在赋值问题。 运行结果也有力地证明了这一点虽然有ab这样的赋值过程但是 a.display() 始终调用的都是 A 类的 display() 函数。换句话说对象之间的赋值不会影响成员函数也不会影响 this 指针。 将派生类对象赋值给基类对象时会舍弃派生类新增的成员也就是“大材小用”如下图所示 可以发现即使将派生类对象赋值给基类对象基类对象也不会包含派生类的成员。 这种转换关系是不可逆的只能用派生类对象给基类对象赋值而不能用基类对象给派生类对象赋值。理由很简单基类不包含派生类的成员变量无法对派生类的成员变量赋值。同理同一基类的不同派生类对象之间也不能赋值。 示例代码 #include iostreamusing namespace std;class Parent { private:int a; };class Child : public Parent { private:int b; };int main() {int a 1.11;double b 2;Parent p; Child c;p c; //只能将派生类对象赋值给基类对象 派生类引用赋值给基类引用 派生类指针赋值给基类指针 向上转型//c p;return 0; }9.2.2 将派生类指针赋值给基类 9.3 类型兼容性原则 类型兼容规则是指在需要基类对象的任何地方都可以使用公有派生类的对象来替代。通过公有继承派生类得到了基类中除构造函数、析构函数之外的所有成员。这样公有派生类实际就具备了基类的所有功能凡是基类能解决的问题公有派生类都可以解决。类型兼容规则中所指的替代包括以下情况 1子类对象可以当作父类对象使用 2子类对象可以直接赋值给父类对象 3子类对象可以直接初始化父类对象 4父类指针可以直接指向子类对象 5父类引用可以直接引用子类对象在替代之后派生类对象就可以作为基类的对象使用但是只能使用从基类继承的成员。类型兼容规则是多态性的重要基础之一。
http://www.dnsts.com.cn/news/221504.html

相关文章:

  • 自己主机做网站服务器哪个网站有手工活做
  • 做游戏必备的几个网站天河区建网站
  • 怎么制作外贸网站模板网络认证
  • 南宁网站怎么制作公司越来越多大学生喜欢虚拟空间
  • 网站增加关键词网站建设的费用是多少钱
  • 湖南建设教育网站怎么把网站源码上传到空间根目录视频
  • wordpress开发门户网站canva可画官网
  • html5 单页 响应式 网站模板网站打不开 域名做解析
  • 第三方网站免费写文案神器
  • 在线捏脸网站需要多少钱想在网站上放百度广告怎么做
  • 成都物流网站建设wordpress会员阅读权限
  • 扬州工程信息网站国外做的好的医疗网站
  • 做家教什么网站东凤网站
  • 徐州手机网站开发公司商城网站seo
  • wordpress网站打包app互联网网站建设计划书
  • 网址站长之家怎么样推广自己的网址
  • 做网站的必要脚本外链生成工具
  • 织梦网站模板安装本地国建设银行e路通网站申
  • 国外的旅游网站做的如何二手车网站建设
  • 网站推广优化教程怎么选择网站建设
  • 音乐网站模板免费源码软件开发模型包括哪些
  • 上海短期网站建设培训wordpress快速下载地址
  • 信誉好的东莞网站推广吉安市建设局施工管理站网站
  • 最新流行网站开发技术网站常用的js效果
  • 网站建设与管理书商城网站开发教程视频
  • 网站建设相关网站视频拍摄制作合同
  • 网站规划设计是什么wordpress支持广告播放器
  • 青浦网站招营业员做一休一h5页面 个人网站
  • 郑州做网站公司有多少钱山东网站建设口碑好
  • 反腐网站建设的目的wordpress 页面 父级