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

医疗网站建设讯息企业门户网站建设思路

医疗网站建设讯息,企业门户网站建设思路,提供温州手机网站制作哪家便宜,中国价格信息网首先我们应该知道C的三大特性就是封装、继承和多态。 此篇文章将详细的讲解继承的作用和使用方法。 继承 一个类#xff0c;继承另一个已有的类#xff0c;创建的过程 父类(基类)派生出子类(派生类)的过程 继承提高了代码的复用性 【1】继承的格式 class 类名:父类名 {}; 【…首先我们应该知道C的三大特性就是封装、继承和多态。 此篇文章将详细的讲解继承的作用和使用方法。 继承 一个类继承另一个已有的类创建的过程 父类(基类)派生出子类(派生类)的过程 继承提高了代码的复用性 【1】继承的格式 class 类名:父类名 {}; 【2】继承的权限 class 类名:继承的权限 父类名 {};如果不写继承方式默认是私有继承 父类中的权限      public|private|protected  public|private|protected   public|private|protected               继承方式                 public                    private                   protected 子类中的权限      public|不能访问|protected  private|不能访问|private    protected|不能访问|protected【3】继承时类中的特殊成员函数 特殊的成员函数不会被继承 构造函数: 需要在子类中显性调用父类的构造函数(初始化列表中)(透传构造)透传构造继承构造委托构造 需要在子类中显性调用父类构造函数的场合: 父类中只有有参构造  -----子类在创建类对象时必须手动调用父类的构造函数 #include iostreamusing namespace std;class Father { public:int age;char c;Father(int a,char c):age(a),c(c){cout  Father有参  endl;} };class Child:public Father    //-----私有继承 {int high; public:void show(){cout  c  endl;} };int main() {//Child c1;  //error因为父类只有有参构造而子类中没有提供能够调用父类有参构造的构造函数不能成功创建父类的空间//Father f1;c1.age;cout  sizeof (Father)  endl;cout  sizeof (Child)  endl;return 0; } i透传构造 在子类构造函数的初始化列表中显性调用父类的构造函数 ii继承构造 C支持 不用在子类中再写一遍父类的构造函数 使用using Father::Father -----在子类中使用父类的构造函数 直接使用继承构造的方式不能对子类成员初始化 继承构造本质上并不是把父类中的构造函数继承给子类编译器自动根据父类中构造函数的格式提供出派生的构造函数(个数和参数都和父类中的构造函数一致)主要还是通过透传构造创建父类的空间 #include iostream using namespace std;class Father { public:int age;char c; //    Father(){cout  Father无参  endl;}Father(int a,char c):age(a),c(c){cout  Father有参两个参数  endl;}Father(char c):c(c){cout  Father有参一个参数的  endl;}Father(Father other):age(other.age),c(other.c){cout  Father拷贝  endl;} };class Child:public Father    //-----私有继承 { private:int high;//父类中的public成员age通过公有继承仍然是publicusing Father::age; //把父类中公有继承下来的age成员在子类中改成私有权限 public:void show(){cout  c  endl;}//子类的无参构造但是显性调用父类的有参构造还给了默认值//透传构造 //    Child():Father(12,a){cout  Child无参构造  endl;} //    Child(int a,char c,int h):Father(a,c),high(h) //    {cout  Child有参构造  endl;}//父类中的所有构造函数都被继承到了子类中using Father::Father; //更高效一些 };int main() {Child c1(10);Child c2(20,z);Child c3  c2;//Father f1;//c1.age;cout  sizeof (Father)  endl;cout  sizeof (Child)  endl;return 0; }iii委托构造 一个类的情况并不直接通过无参构造实例化对象而是无参构造委托了有参构造实例化对象 继承时的情况     Child():Child(10){cout  Child无参构造  endl;}   //Child c1Child(int a):Father(12,a),high(a){cout  Child有参构造一个参数  endl;} iv拷贝构造 需要在初始化列表中显性调用父类的拷贝构造传other对象到父类的拷贝构造中 Father(Father other):age(other.age),c(other.c){cout  Father的拷贝构造  endl;} Child(Child other):Father(other),high(other.high){} 【4】继承时构造和析构的时机 继承关系可以理解为包含关系 子类在继承父类时会把父类中的成员保留一份再来创建子类自己的成员 父类先构造子类后构造 子类先析构父类后析构 #include iostreamusing namespace std; class F {int *p; public:F():p(new int){cout  F无参构造  endl;}~F(){delete p;cout  F析构函数  endl;} }; class C:public F {int *p; public:C():p(new int){cout  C无参构造  endl;}~C(){delete p;cout  C析构函数  endl;} };int main() {C *p1  new C;delete p1; //空间释放时会自动调用析构函数无需手动调用p1  nullptr;return 0; }【5】父子类中存在同名成员问题 访问时不会发生冲突默认访问子类的 #include iostream using namespace std; class F { public:int *p;F():p(new int){cout  F无参构造  endl;}~F(){delete p;cout  F析构函数  endl;} }; class C:public F { public:int *p;C():p(new int){cout  C无参构造  endl;}~C(){delete p;cout  C析构函数  endl;} };int main() {C *p1  new C;*(p1-p) 90;cout  *(p1-p)  endl; //子类成员和父类成员同名默认优先访问子类成员cout  *(p1-F::p)  endl; //通过域限定符访问父类的成员delete p1; //空间释放时会自动调用析构函数无需手动调用p1  nullptr;return 0; } 多重继承 一个子类继承自多个基类 【1】格式 class 类名:继承权限 父类名,继承权限 父类名···· {} 【2】当多个父类中包含同名成员 多个父类中包含同名成员通过域限定符访问指定的父类中成员 #include iostreamusing namespace std;class Room { public:void clean(){cout  打扫房间  endl;} }; class BedRoom { public:void play(){cout  可以玩游戏  endl;}void clean(){cout  打扫卧室  endl;} };//Home类公共继承字Room和BedRoom类 class Home:public Room,public BedRoom { };int main() {Home h1;h1.play();h1.Room::clean();h1.BedRoom::clean();return 0; } 菱形继承(钻石继承) 【1】格式      A                -----公共基类/   \B     C             ------中间子类\   /D                ------汇集子类 汇集子类中会包含两份公共基类中的内容 【2】菱形继承存在的问题 会发生二义性的问题(同一个变量或者函数可以通过两种方法访问)如果公共基类过大会造成汇集子类中的代码膨胀/冗余 #include iostreamusing namespace std; class A { public:int a;//A(int a):a(a){cout  A  endl;} };class B:public A { public:int c;//B(int a,int c):A(a),c(c){cout  B  endl;} };class C:public A { public://C(int a):A(a){cout  C  endl;} };class D:public C,public B { public://D(int a,int c):B(a,c),C(a),A(a){cout  D  endl;} };int main() {D d1;d1.B::a  90; //二义性还可以直接通过中间子类访问直接访问B中的a成员//cout  d1.C::A::a  endl;  //会发生二义性因为访问A但是有两条路径都访问到Areturn 0; } 【3】虚继承(virtual) 虚继承指对公共基类的虚继承。 主要用于解决菱形继承问题 采用虚继承后公共基类中的内容只会在汇集子类中存在一份在汇集子类中可以通过任意一条路径访问到公共基类中的成员 #include iostreamusing namespace std; class A { public:int a; };class B:virtual public A { public:int c; };class C:virtual public A {};class D:public B,public C {};int main() {D d1;d1.B::A::a  90;cout  d1.C::A::a  endl;return 0; }
http://www.zqtcl.cn/news/728393/

相关文章:

  • 四川建设安全监督管理局网站网站传送门怎么做
  • 哪家网站做推广好优化师和运营区别
  • 鹰潭网站建设公司南宁行业平台开发公司
  • 织梦如何仿手机网站源码奉贤区专业建网站
  • 上海网站建设接单wordpress htaccess 404
  • 长春网站优化指导网站怎样做301跳转
  • 做网站域名是什么意思临沧网站开发
  • 怎么在网站上做网页专业图库网站 西安
  • 龙南建设局网站wordpress 购物导航网站
  • 做数据分析好看的网站自己做背景的网站
  • 做纸棋的网站制作什么网站做毕业设计
  • 上海易雅达网站建设公司广元网站开发
  • 网站备案注销北京优化健康宝
  • 网站地图怎么做XML深圳公共资源交易中心
  • 高碑店做网站的公司湛江专业建站推荐
  • 中国建设银行官网的网站首页c2c电子商务网站建设栏目结构图
  • 做网站的软件图标上海建站外贸
  • 保定网站建设推广成都移动端网站建设
  • 服务平台型网站做那个网站比较好
  • 网站做icp备案需要多久上海人才引进官网
  • 国外的设计网站app有什么好的免费网站做教育宣传语
  • 做期货都看那些网站淮北网
  • 网站建设的需求怎么写网站头条怎么做
  • 宜春seoseo网站自动推广
  • 张家界酒店网站建设人人设计网网址
  • 电脑系统做的好的网站什么网站做一手房好
  • 为什么用MyEclipse做网站上海境外输入
  • 做的比较好的小众网站go 是做网站的吗
  • 手机网站快速建设网站接入支付宝需要网站备案吗
  • 贵州省住房城乡建设厅网站农业营销型网站源码