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

百度站长平台注册梅花seo 快速排名软件

百度站长平台注册,梅花seo 快速排名软件,从哪个网站找钢做的微商,温州有没有做鞋的网站一、菱形继承的基本概念 菱形继承又称为钻石继承,由公共基类派生出多个中间子类,又由多个中间子类共同派生出汇聚子类。汇聚子类会得到,中间子类从公共基类继承下来的多份成员。 菱形继承的格式: 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.dinnco.com/news/52828.html

相关文章:

  • 个人网站设计模板素材杭州网站推广优化
  • 石家庄seo网站优化网站的建设流程
  • 导航网站cms企业网站设计公司
  • 微信营销大师威海seo公司
  • 自己网站怎么做优化内容营销成功案例
  • 网站百科怎么做宁波seo推荐推广平台
  • 江苏常州网站建设免费网络推广方式
  • 100个详情页设计图对seo的认识和理解
  • 做网站联盟要多少钱网络营销五个主要手段
  • 网站建设销售前景新人做外贸怎么找国外客户
  • 威县网站建设青岛网站推广关键词
  • wordpress多域名管理南京seo招聘
  • 制作动态网站用什么软件免费的网站软件下载
  • 网站建设协议百度企业推广怎么收费
  • 网站建设大概多少钱网页设计代码
  • 顺义网站建设一键优化下载安装
  • 做黑时时彩的网站西安百度竞价托管
  • 太原微商网站建设网店推广策划书
  • 淄博外贸网站哪家好网络营销策划案例
  • 网站空间每年继费到哪交酒店推广渠道有哪些
  • 网站内容建设方案百度灰色词排名代发
  • 福州网站建设流程吸引人的微信软文
  • 网络建站招聘网站排行榜前十名
  • 网站搜索怎么做php郑州seo外包
  • 网页设计与制作基础知识总结淘宝关键词优化工具
  • 网站公司说我们做的网站服务器不够用b站网页入口
  • 宁夏做网站的自媒体视频发布平台
  • 厦门网站的关键词自动排名爱站网为什么不能用了
  • 东宁网站制作镇江抖音seo
  • 做 专而精 的网站今日足球赛事分析推荐