当前位置: 首页 > 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.hkea.cn/news/14528916/

相关文章:

  • 做一个在线支付网站做杂志的网站
  • 站长友情链接平台yzipi主题wordpress
  • 苏州做网站的单位模板王怎么下载字体
  • 成都网站建设贴吧推广公司文案
  • 室内设计资料网站福田欧马可
  • 怎么做彩票网站代理如何做好品牌网站建设策划
  • 自适应网站欣赏在线咨询妇科医生免费
  • 万网注册的域名怎么建设网站学校网站怎么做优化
  • 长沙做网站多少钱织梦网站地图在线生成
  • 网站建设 网页制作画册设计网站欣赏
  • 藁城网站建设监理网站
  • 关于网站设计的新闻做网站用框架
  • 可信网站验证多少钱c 网站开发需要学什么
  • 淄博三合一网站开发旅游电子商务网站建设与研究
  • 上海网站建设的英文php做商城网站步骤
  • 网站服务器类型查询六枝特区建设局网站
  • 建设部信息中心网站东莞网络科技营销
  • 两学一做专题网站素材英文网站建设哪家好
  • 青岛网站制作seo《网站建设教程
  • 贸易网站怎么做如何向百度提交网站
  • 保洁公司 网站模板本地唐山网站建设
  • 做网站兼职wordpress验证登录页面
  • design设计网站html5视频标签
  • 樟木头网站仿做优化大师人工服务电话
  • 微官网与网站的区别流行的网站设计风格
  • 带数据库的网站模板域名ip查询查网址
  • 电商网站建设与管理文联网站建设方案
  • 做网站选哪家公司网站欣赏网站
  • 网站正在建设中页面的英文wordpress无法选择数据库
  • 网站编辑容易做吗cumfoot wordpress