zoukankan      html  css  js  c++  java
  • c++ 单继承派生类的构造函数

    1、派生类的构造函数:

      

    #include <iostream>
    #include<string>
    using namespace std;
    class Student//声明基类Student 
     {
      public:   Student(int n,string nam,char s) //基类构造函数   {
          num=n;    name=nam;    sex=s;
        }     
    ~Student( ){ } //基类析构函数 protected: //保护部分    int num;   string name;   char sex ; };
    class Student1: public Student //声明派生类Student1,继承方式有public,protected,private。 {
      public: //派生类的公用部分
    Student1(int n,string nam,char s,int a,string ad):Student(n,nam,s) //派生类构造函数,也可以写成初始化列表形式,如:Student1(int n, string nam,char s,int a, string ad):Student(n,nam,s),age(a),addr(ad){}
       {
        age=a; //在函数体中只对派生类新增的数据成员初始化 addr=ad; } void show( ) {
        cout
    <<″num: ″<<num<<endl; cout<<″name: ″<<name<<endl; cout<<″sex: ″<<sex<<endl; cout<<″age: ″<<age<<endl; cout<<″address: ″<<addr<<endl<<endl; } ~Student1( ){ } //派生类析构函数 private: //派生类的私有部分 int age; string addr; }; int main( ) {
      Student1 stud1(
    10010,″Wang-li″,′f′,19,″115 Beijing Road,Shanghai″);  Student1 stud2(10011,″Zhang-fun″,′m′,21,″213 Shanghai Road,Beijing″); stud1.show( ); //输出第一个学生的数据 stud2.show( ); //输出第二个学生的数据 return 0; } /* 运行结果为 num:10010 name:Wang-li sex:f address: 115 Beijing Road,Shanghai num:10011 name:Zhang-fun sex:m address: 213 Shanghai Road,Beijing

    */

    2、多重派生类的构造函数:

      

    #include <iostream>
    #include<string>
    using namespace std;
    class Student//声明基类
     {
    public: //公用部分 Student(int n, string nam ) //基类构造函数 {
        num=n; name=nam; } void display( ) //输出基类数据成员 {
        cout<<″num:″<<num<<endl; cout<<″name:″<<name<<endl; }
    protected: //保护部分 int num; //基类有两个数据成员 string name; }; class Student1: public Student //声明公用派生类Student1 {public:  Student1(int n,char nam[10],int a):Student(n,nam)//派生类构造函数 {age=a; } //在此处只对派生类新增的数据成员初始化  void show( ) //输出num,name和age {
        display( ); //输出num和name cout<<″age: ″<<age<<endl; } private: //派生类的私有数据 int age; //增加一个数据成员 }; class Student2:public Student1 //声明间接公用派生类Student2 {public: // //下面是间接派生类构造函数 Student2(int n, string nam,int a,int s):Student1(n,nam,a)     {score=s;} void show_all( ) //输出全部数据成员   {
        show( ); //输出num和name cout<<″score:″<<score<<endl; //输出age } private: int score; //增加一个数据成员 }; int main( ) {
       Student2 stud(
    10010,″Li″,17,89); stud.show_all( ); //输出学生的全部数据 return 0; } /* 运行时的输出如下:   num:10010   name:Li   age:17   score:89
    --------------------------------------------

    请注意基类和两个派生类的构造函数的写法:
    基类的构造函数首部:
      Student(int n, string nam)
    派生类Student1的构造函数首部:
      Student1(int n, string nam],int a):Student(n,nam)
    派生类Student2的构造函数首部:
      Student2(int n, string nam,int a,int s):Student1(n,nam,a)
    在声明Student2类对象时,调用Student2构造函
    数;在执行Student2构造函数时,先调用Student1
    构造函数;在执行Student1构造函数时,先调用基
    类Student构造函数。初始化的顺序是:
      ① 先初始化基类的数据成员num和name。
      ② 再初始化Student1的数据成员age。
      ③ 最后再初始化Student2的数据成员score。

    */
  • 相关阅读:
    网站、数据库的衍变之路(三)
    脚本嵌入式抓取引擎
    db4objects 7.4应用笔记
    网站、数据库的衍变之路(二)
    IIS连接数实验——Web开发必读
    攻破WebService,WCF的改进
    C#使用BerkeleyDB操作简介
    面试两个星期来的一点体会
    Lucene.Net 2.3.1开发介绍 —— 四、搜索(三)
    轻量级爬虫+全文检索解决方案项目——NukeLite(20081114 更新r24版 引入新线程机制)
  • 原文地址:https://www.cnblogs.com/lbangel/p/3274646.html
Copyright © 2011-2022 走看看