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

免费创建网站带咨询的公司网络推广方法

免费创建网站带咨询的,公司网络推广方法,主机开通成功网站建设中,计算机毕设网站代做一、菱形继承的基本概念 菱形继承又称为钻石继承,由公共基类派生出多个中间子类,又由多个中间子类共同派生出汇聚子类。汇聚子类会得到,中间子类从公共基类继承下来的多份成员。 菱形继承的格式: A --------公共基类/ \…

一、菱形继承的基本概念

        菱形继承又称为钻石继承,由公共基类派生出多个中间子类,又由多个中间子类共同派生出汇聚子类。汇聚子类会得到,中间子类从公共基类继承下来的多份成员。

菱形继承的格式:

                 A       --------公共基类/    \B      C    ------- 中间子类\    /D       --------汇聚子类

示例:

 

#include <iostream>
using namespace std;//封装公共基类 家具 类
class Jiaju
{
private:string color;
public://无参构造Jiaju() {cout << "家具的无参构造函数" << endl;}//有参构造Jiaju(string n):color(n){cout << "家具的有参构造函数" << endl;}
};//中间子类
//封装 沙发的类
class Sofa:public Jiaju
{
private:string sitting;
public://无参构造Sofa() {cout << "沙发的无参构造" << endl;}//有参构造函数Sofa(string s,string c):Jiaju(c),sitting(s){cout << "沙发的有参构造" << endl;}void display(){cout << sitting << endl;}
};//中间子类
//封装 床 类
class Bed:public Jiaju
{
private:string sleep;public://无参Bed() {cout << "床的无参构造" << endl;}//有参Bed(string s,string c):Jiaju(c),sleep(s){cout << "床的有参构造" << endl;}void display(){cout << sleep << endl;}
};//汇聚子类
//封装 沙发床类  继承于沙发 和 床
class Sofa_Bed:public Bed,public Sofa
{
private:int w;
public://Sofa_Bed(){cout << "沙发床的无参构造" << endl;}//有参构造Sofa_Bed(string sit, string s, int w,string c):Bed(s,c),Sofa(sit,c),w(w){cout << "沙发床的有参构造" << endl;}
};int main()
{
//    Sofa_Bed s;Sofa_Bed s1("可坐","可躺",123,"pink");return 0;
}

菱形继承存在的问题:

        汇聚子类会得到,中间子类从公共基类继承下来的多份成员,造成空间浪费,没有必要,还会对公共基类的成员多次初始化,或释放。

二、虚继承

 虚继承的作用:

        可以让汇聚子类只保留一份 中间子类从公共基类继承下来的成员。       

 虚继承的格式:

        在中间子类的继承方式前 加上 virtual

class 类名 : virtual 继承方式 类名   //中间子类
{中间子类的拓展;
};

使用虚继承的注意事项: 

        中间子类虚继承公共基类后,汇聚子类的初始化列表,先调用中间子类的有参构造函数,中间子类再调用公共基类的有参构造函数。但是,虚继承之后,只保留一份中间子类从公共基类继承下来的有参构造函数,意味着不知道调用哪一个中间子类继承下来的公共基类的构造函数,这样就会默认调用公共基类的无参构造函数。

        如果汇聚子类想要对公共基类的数据成员初始化,需要显性调用公共基类的构造函数。

示例: 

#include <iostream>
using namespace std;//封装公共基类 家具 类
class Jiaju
{
private:string color;
public://无参构造Jiaju() {cout << "家具的无参构造函数" << endl;}//有参构造Jiaju(string n):color(n){cout << "家具的有参构造函数" << endl;}
};//中间子类
//封装 沙发的类
class Sofa:virtual public Jiaju  //中间子类虚继承公共基类
{
private:string sitting;
public://无参构造Sofa() {cout << "沙发的无参构造" << endl;}//有参构造函数Sofa(string s,string c):Jiaju(c),sitting(s){cout << "沙发的有参构造" << endl;}void display(){cout << sitting << endl;}
};//中间子类
//封装 床 类
class Bed:virtual public Jiaju  //中间子类虚继承公共基类
{
private:string sleep;public://无参Bed() {cout << "床的无参构造" << endl;}//有参Bed(string s,string c):Jiaju(c),sleep(s){cout << "床的有参构造" << endl;}void display(){cout << sleep << endl;}
};//汇聚子类
//封装 沙发床类  继承于沙发 和 床
class Sofa_Bed:public Bed,public Sofa
{
private:int w;
public://Sofa_Bed(){cout << "沙发床的无参构造" << endl;}//有参构造Sofa_Bed(string sit, string s, int w,string c):Jiaju(c),Bed(s,c),Sofa(sit,c),w(w) //需要在汇聚子类中显性调用公共基类的有参构造函数{cout << "沙发床的有参构造" << endl;}
};int main()
{
//    Sofa_Bed s;Sofa_Bed s1("可坐","可躺",123,"pink");return 0;
}

http://www.yayakq.cn/news/41485/

相关文章:

  • 北京高端网站建设飞沐怎么学做电子商务网站
  • 部门网站建设管理经验交流材料小程序如何开发
  • 怎么在免费空间里面做网站自己做一网站 多做宣传.
  • 投资理财产品网站建设人力资源外包灵活用工
  • 怎样做网站海报免费网站模板大全
  • 做网站用织梦好吗陕西专业网站建设价格
  • 知名网站建设在哪里网站建设征求意见稿
  • 杭州网站设计步骤做求职网站
  • 网络宣传网站建设建站seo和sem是什么意思
  • 怎么添加网站权重网站建设太金手指六六三十
  • 哈尔滨公司做网站山西网站开发二次开发
  • 建立企业网站平台网站建设设计
  • 自助建站最大中铁建设集团有限公司华北分公司
  • 网站开发学历要求重庆建设官网
  • 怎样做加入购物车的网站网站推荐
  • 四川鸿业建设集团公司网站丽水建设局网站
  • 苏州html网站模板做服装的网站
  • 永川区做网站高级程序员培训
  • 毕业设计 建设旅游网站合肥网站建站建设
  • 做网站从哪方面入门erp软件有哪些品牌
  • 建设门户网站人均ip1000需要多大数据库wordpress3.8
  • 机械加工网站哪里找c 网站开发视频
  • 酷站网素材最大的网站模板网
  • 网站建设pc移动app企业固定ip做网站
  • 东莞建网站哪家好国家工程建设标准化网站
  • 建企业网站浩森宇特百度百科怎么创建
  • 大同做网站上海单个关键词优化
  • 模块式网站制作徐州网站开发哪个好薇
  • 果洛州公司网站建设wordpress 4.0 简体中文
  • 怎么和客户推广说网站建设语建站网址什么意思