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

温州网站建设制作公司/网站综合排名信息查询

温州网站建设制作公司,网站综合排名信息查询,b站推广网站2024不用下载软件,淄博做网站建设在继承方面引进多继承机制 一个类继承多个父类或者多个父类派生一个子类 子类会吸收父类所有的成员 在子类继承中不同类继承同名的成员不能直接使用名字 否则会早成不明确的问题 通过类名::成员 表示出继承哪一个父类的成员变量或者成员函数 多继承中子类调用父类构造和继承顺序…

在继承方面引进多继承机制 一个类继承多个父类或者多个父类派生一个子类

子类会吸收父类所有的成员 在子类继承中不同类继承同名的成员不能直接使用名字 否则会早成不明确的问题

通过类名::成员 表示出继承哪一个父类的成员变量或者成员函数

多继承中子类调用父类构造和继承顺序有关 先继承的先调用后继承的后调用 重名结果是最后继承的结果

调用析构顺序和调用继承顺序相反 

菱形继承 A派生类B,C 类B,C共同派生类D

虚继承 关键字virtual  在继承前加上关键字表示虚继承

虚继承主要解决的就是 菱形问题

 头文件A.h

 1 #pragma once
 2 #include<iostream>
 3 using namespace std;
 4 class A
 5 {
 6 protected:
 7     int m_a;
 8     int arr[100];
 9 public:
10     A();
11     ~A();//在类中调用构造和析构必须写名调用不然会包错 不写的花编译器会自动帮你生成一个构造和析构
12 };
13 class B : virtual public A
14 {
15 protected:
16     int m_b;
17     int x;
18 public:
19     B(){}
20     ~B(){}
21 };
22 class C :virtual public A
23 {
24 protected:
25         int m_c;
26         int x;
27 public:
28     C(){}
29     ~C(){}
30 
31         
32 };
33 class D : public B,public C//类D继承类BC
34 {
35 protected:
36     int m_d;
37 public:
38     D(){}
39     ~D(){}
40     void fun(){
41         m_b = 3;//继承B中的成员
42         m_c = 2;//继承C中的成员
43         B::x = 2;
44         C::x = 4;//修改B中和C中的x的值
45         //不能写x=2;这种方法无法确定调用的哪一个x
46     }
47 };
48 
49 class plant
50 {
51 protected:
52     int color;
53 public:
54     plant(){
55         cout << "调用plant构造" << endl;
56         color = 3;
57     }
58     void printColor(){//在父类中输出color的值
59         cout << color << endl;
60     }
61 
62 };
63 
64 class fruit :virtual public plant
65 {
66 public:
67     fruit()
68     {
69         cout << "调用fruit构造" << endl;//输出文字检测判定的顺序
70         color = 2;//继承父类plant中的color成员
71     }
72 };
73 class vegetable :virtual public plant
74 {
75 public:
76     vegetable(){
77         cout << "调用vegetable构造" << endl;
78         color = 0;
79     }
80 
81 };//类和结构体结尾都是以分号结束
82 class tomato :public vegetable, public fruit//有先后顺序 先继承的先调用
83 {
84 public:
85     void fun()
86     {
87         //color = 1;
88         cout << "调用tomato下的fun函数" << endl;
89     }
90     void printColor()
91     {
92         cout << color << endl << vegetable::color << endl << fruit::color << endl;
93     //不能直接写color要用域名解析符调用你所需要的哪个变量不然会造成语义不明确
94         //利用虚函数可以对color直接调用因为color是祖父类的color
95     }
96 };

对A的构造和析构进行声明

#include "A.h"A::A()
{
}A::~A()
{
}

  主函数对类的调用

 1 #include "A.h"
 2 int main()
 3 {
 4     D d;
 5     cout << "D的大小" << sizeof(d) << endl;//没有使用虚继承的形式继承多少加多少 D的大小为103*2*4+4=828 
 6     //使用虚继承 偏移量4个字节 A:101*4+4 B:8+4 C:8 D:4 432
 7     tomato to;
 8     to.printColor();//输出结果调用color最后一次调用的是fruit所以三次结果都是2
 9     cout << "to的大小" << sizeof(to) << endl;//to是调用的color color是int为4个字节因为调用了三次所以为12个字节
10     //去掉虚继承之后大小为8调用了两次color的值 
11     cin.get();
12     return 0;
13 }
14 
15 //普通的多继承 子类继承多个父类的所有成员
16 //子类调用构造的时候会一次调用多个父类的构造
17 //子类对象包含所有父类的所有成员
18 
19 //虚继承

 

转载于:https://www.cnblogs.com/liugangjiayou/p/11380920.html

http://www.lbrq.cn/news/973009.html

相关文章:

  • wordpress登陆不上/vue seo优化
  • 做网站找人/seo规范培训
  • 废物利用手工制作图片/百度搜索seo优化技巧
  • 云南建设银行招聘网站/搜索引擎原理
  • 青海 网站开发 图灵/职业技能培训
  • 石河子建设局网站/地推网
  • 做设计都有什么网站/正版seo搜索引擎
  • 网站如何做推广/优化大师免安装版
  • 网站建设需求 百度文库/免费做网站怎么做网站链接
  • 平面设计网站大全有哪些/网站运营工作内容
  • 怎样做网站吸引人/软文营销的特点有哪些
  • php做网站后台语言/网站建设品牌公司
  • 凉山州住房与城乡建设局网站/建网站怎么赚钱
  • wordpress登入后台/沈阳网站关键词优化公司
  • 建立企业网站要多少钱/seo数据统计分析工具有哪些
  • 无锡网站建设设计/企业营销策划方案
  • 利用jsp做网站/seo怎么赚钱
  • 做网站充值微信必须是企业/如何引流与推广
  • 免费做网站教程/十大网站平台
  • 企业网站建设排名口碑/windows7优化大师下载
  • 科技手抄报内容/东莞优化怎么做seo
  • 如何做网站反链/百度无锡营销中心
  • 传统设计公司网站/磁力链
  • 鄂州网站建设价格/市场营销八大营销模式
  • 沈阳高端网站/百度浏览器网址是多少
  • html5 国内网站建设/网站加速
  • 做短视频的网站收益/百度浏览器下载官方免费
  • 做设计网站/白山seo
  • 网站开发前期准备/网上店铺的推广方法有哪些
  • 网站瀑布流滚动加载/华与华营销策划公司
  • 深度学习 Pytorch图像分类步骤
  • 9、线程理论1
  • QT——QComboBox组合框控件
  • 【卡尔曼滤波第六期】集合变换卡尔曼滤波 ETKF
  • JavaScript进阶篇——第四章 解构赋值(完全版)
  • 测试tcpdump,分析tcp协议