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(,″Wang-li″,′f′,,″ Beijing Road,Shanghai″);
 Student1 stud2(,″Zhang-fun″,′m′,,″ Shanghai Road,Beijing″);
stud1.show( ); //输出第一个学生的数据
stud2.show( ); //输出第二个学生的数据
return ;
}
/*
运行结果为
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[],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(,″Li″,,);
stud.show_all( ); //输出学生的全部数据
return ;
}
/*
运行时的输出如下:
  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。

*/

c++ 单继承派生类的构造函数的更多相关文章

  1. 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成员)

    [源码下载] 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成 ...

  2. C++学习之路—继承与派生(二):派生类的构造函数与析构函数

    (根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 由于基类的构造函数和析构函数是不能被继承的,所以 ...

  3. 【C++继承与派生之二】有子对象的派生类的构造函数

    这是我今天看书刚刚看到的,觉着以前对这一块内容了解不多,所以整理一下分享给大家.首先要介绍一下子对象的概念.类的数据成员不仅可以是int.char这样的基本类型,也可以是类对象,如可以包含这样的数据成 ...

  4. C++学习17派生类的构造函数

    基类的构造函数不能被继承,在声明派生类时,对继承过来的成员变量的初始化工作也要由派生类的构造函数来完成.所以在设计派生类的构造函数时,不仅要考虑派生类新增的成员变量,还要考虑基类的成员变量,要让它们都 ...

  5. C++:派生类的构造函数和析构函数

    4.2 派生类的构造函数和析构函数4.2.1 派生类构造函数和析构函数的执行顺序 通常情况下,当创建派生类对象时,首先执行基类的构造函数,随后再执行派生类的构造函数:当撤销派生类对象时,则先执行派生类 ...

  6. 【C++学习之路】派生类的构造函数(三)

    三.多层继承的派生类 1.多层继承的派生类只需在构造函数的初始化列表中写出直接基类的构造函数即可 class student { public: student(int n, string nam) ...

  7. 【C++学习之路】派生类的构造函数(一)

    一.简单派生类的构造函数 1.所谓简单派生类,就是指派生类中不包含基类的内嵌对象的派生类. 2.一般来说,这样的派生类的构造函数的形式是: student( int i, string nam, in ...

  8. c++, 派生类的构造函数和析构函数 , [ 以及operator=不能被继承 or Not的探讨]

    说明:文章中关于operator=实现的示例,从语法上是对的,但逻辑和习惯上都是错误的. 参见另一篇专门探究operator=的文章:<c++,operator=>http://www.c ...

  9. 【C++ Primer 第15章】定义派生类拷贝构造函数、赋值运算符

    学习资料 • 派生类的赋值运算符/赋值构造函数也必须处理它的基类成员的赋值 • C++ 基类构造函数带参数的继承方式及派生类的初始化 定义拷贝构造函数 [注意]对派生类进行拷贝构造时,如果想让基类的成 ...

随机推荐

  1. 数据库~大叔通过脚本生成poco实体

    今天在做开发时,需要把表映射成实体,又没有EF这种工具,就从网上下了一个工具,但使用时觉得太重了,所以就自己写了一个,基于mysql的. 功能:输入表名,得到这个表的poco实体 SELECT COL ...

  2. Linux定时任务与开机自启动脚本(cron与crontab)

    开机自启动脚本 网上常见的脚本开机自启方法是: 假设要自启的脚本位于 /home/user/test.sh 给脚本可执行的权限 sudo chmod +x /home/user/test.sh 将脚本 ...

  3. 命令行编译java项目

    命令行编译java项目 项目名: testproj 目录 src -> cn -> busix -> test bin lib 编译项目 cd testproj javac -d . ...

  4. vue2.0 饿了么项目学习总结

    最近在GitHub上发现一个基于vue2.0的饿了么项目.本着互联网的分享精神,现在将我自己所理解的,所总结的经验分享给大家.本篇文字我将从学习的角度向大家分享. 在学习本项目之前我已经将vue2.0 ...

  5. ubuntu系统没有声音解决方法

    好像装了个放视频的软件,就没有声音了.后面网上搜到了一个简单粗暴的办法,效果很明显,改变权限后直接就有声音了. -------------------------------------------- ...

  6. 3.storm-starter打包在storm集群上运行

    1.使用maven或者其他打包工具将storm-starter打成jar包 2.请将jar包用解压工具打开在根目录下找到defaults.yaml文件并将其删除不然到时会报有multiply defa ...

  7. typeScript入门(三)接口

      接口我感觉是很常用的一块 定义标准: 接口的作用:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用.接口定义了某一批类所需要遵守的规 ...

  8. Jupyter Notebook(iPython)

    一.Jupyter Notebook介绍 1.什么是Jupyter Notebook Jupyter Notebook是基于网页的用于交互计算的应用程序.其可被应用于全过编码开发.文档编写.运行代码和 ...

  9. CRM——起步

    一.CRM简介 crm 客户关系管理软件 ( Customer Relationship Management ). 二.CRM起步 1.设计表结构和数据库迁移 from django.db impo ...

  10. cf1064E. Dwarves, Hats and Extrasensory Abilities(二分 交互)

    题意 题目链接 \(n\)次操作,每次你给出一个点的坐标,系统会返回该点的颜色(黑 / 白),程序最后输出一条直线把所有黑点和白点分隔开 Sol 一个很直观的想法:首先询问\((dx, 0)\),然后 ...