搜狐媒体平台-搜狐网站>IT

他一出家就成中国最帅和尚

眼眸深邃、轮廓分明、身材颀长,活生生的一幅画。

大学副教授与在押服刑女结婚

这在监狱民警看来,那么令人不可思议。

在 C++ 中子类继承和调用父类的构造函数方法

cpp开发者mp 阅读(0) 评论()
声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。举报

(点击上方公众号,可快速关注)

  来源:hemmingway,2012-08-11

  https://blog.csdn.net/hemmingway/article/details/7853713

  如有好的文章投稿,请点击 → 这里查看详情;

  构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法)。因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。

  如果没有显式的构造函数,编译器会给一个默认的构造函数,并且该默认的构造函数仅仅在没有显式地声明构造函数情况下创建。

  构造原则如下:

  1. 如果子类没有定义构造方法,则调用父类的无参数的构造方法。

  2. 如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法。

  3. 在创建子类对象时候,如果子类的构造函数没有显示调用父类的构造函数,则会调用父类的默认无参构造函数。

  4. 在创建子类对象时候,如果子类的构造函数没有显示调用父类的构造函数且父类自己提供了无参构造函数,则会调用父类自己的无参构造函数。

  5. 在创建子类对象时候,如果子类的构造函数没有显示调用父类的构造函数且父类只定义了自己的有参构造函数,则会出错(如果父类只有有参数的构造方法,则子类必须显示调用此带参构造方法)。

  6. 如果子类调用父类带参数的构造方法,需要用初始化父类成员对象的方式,比如:

  #include <iostream.h>

  classanimal

  {

  public:

  animal(intheight,intweight)

  {

  cout<<"animal construct"<<endl;

  }

  

  };

  classfish:publicanimal

  {

  public:

  fish():animal(400,300)

  {

  cout<<"fish construct"<<endl;

  }

  

  };

  voidmain()

  {

  fish fh;

  }

  在fish类的构造函数后,加一个冒号(:),然后加上父类的带参数的构造函数。这样,在子类的构造函数被调用时,系统就会去调用父类的带参数的构造函数去构造对象。

  例外像MFC常见的CDialog继承可以看到这种例子..

  头文件中

  #pragma once

  classCDrugDlg: publicCDialogEx

  {

  DECLARE_DYNAMIC(CDrugDlg)

  public:

  CDrugDlg(CWnd*pParent= NULL);// 标准构造函数

  virtual~CDrugDlg();

  // 对话框数据

  enum{IDD= IDD_DRUG_DIALOG};

  protected:

  virtual voidDoDataExchange(CDataExchange*pDX);// DDX/DDV 支持

  DECLARE_MESSAGE_MAP()

  public:

  afx_msg voidOnSize(UINT nType,intcx,intcy);

  virtual BOOLOnInitDialog();

  afx_msg voidOnPaint();

  afx_msg voidOnDestroy();

  };

  实现文件

  // DrugDlg.cpp : 实现文件

  //

  #include "stdafx.h"

  #include "Medical.h"

  #include "DrugDlg.h"

  #include "afxdialogex.h"

  // CDrugDlg 对话框

  IMPLEMENT_DYNAMIC(CDrugDlg,CDialog)

  CDrugDlg::CDrugDlg(CWnd*pParent/*=NULL*/)

  :CDialogEx(CDrugDlg::IDD,pParent)

  {

  }

  CDrugDlg::~CDrugDlg()

  {

  }

  这种初始化方式,还常用来对类中的常量(const)成员进行初始化,如下面的代码所示:

  classpoint

  {

  public:

  point():x(0),y(0)

  private:

  constintx;

  constinty;

  };

  当然,类中普通的成员变量也可以采取此种方式进行初始化,然而,这就没有必要了..

觉得本文有帮助?请分享给更多人

关注「CPP开发者」

看更多精选C/C++技术文章

↓↓↓

mt.sohu.com true cpp开发者mp https://mt.sohu.com/20170124/n479511370.shtml report 9672 (点击上方公众号,可快速关注)来源:hemmingway,2012-08-11https://blog.csdn.net/hemmingway/article/d
阅读(0) 举报
欢迎举报抄袭、转载、暴力色情及含有欺诈和虚假信息的不良文章。

热门关注

搜生活

搜生活+关注

搜狐公众平台官方账号

MAGIC杨梦晶

MAGIC杨梦晶+关注

生活时尚&搭配博主 /生活时尚自媒体 /时尚类书籍作者

搜狐教育

搜狐教育+关注

搜狐网教育频道官方账号

星吧GEO

星吧GEO+关注

全球最大华文占星网站-专业研究星座命理及测算服务机构

热门图片

  • 热点视频
  • 影视剧
  • 综艺
  • 原创
锦绣缘

同步热播-锦绣缘

主演:黄晓明/陈乔恩/乔任梁/谢君豪/吕佳容/戚迹
神雕侠侣

大结局-神雕侠侣

主演:陈晓/陈妍希/张馨予/杨明娜/毛晓彤/孙耀琦
封神英雄榜

同步热播-封神英雄榜

主演:陈键锋/李依晓/张迪/郑亦桐/张明明/何彦霓

六颗子弹

主演:尚格·云顿/乔·弗拉尼甘/Bianca Bree
龙虎少年队2

龙虎少年队2

主演:艾斯·库珀/ 查宁·塔图姆/ 乔纳·希尔

《奔跑吧兄弟》

baby14岁写真曝光

《我看你有戏》

李冰冰向成龙撒娇争宠

《明星同乐会》

李湘遭闺蜜曝光旧爱

《非你莫属》

美女模特教老板走秀

《一站到底》

曝搬砖男神奇葩择偶观

搜狐视频娱乐播报

柳岩被迫成赚钱工具

大鹏嘚吧嘚

大屁小P虐心恋

匆匆那年第16集

匆匆那年大结局

隐秘而伟大第二季

乔杉遭粉丝骚扰

The Kelly Show

男闺蜜的尴尬初夜

我来说两句排行榜

客服热线:86-10-58511234

客服邮箱:kf@vip.sohu.com