zoukankan      html  css  js  c++  java
  • 【C++继承与派生之二】有子对象的派生类的构造函数

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

    Student s1;     //Student是已经声明的类


    这时s1就是类对象中的内嵌对象,即为 子对象,这与结构体类型的成员可以是结构体变量类似。

    回顾一下简单派生类构造函数的写法:

    class 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{
    public:
    	student1(int n,string nam,char s,int a,string ad):student(n,nam,s){
    		age=a;
    		addr=ad;
    	}
    	~student1(){}
    private:
    	int age;
    	string addr;
    };
    

    派生类一般构造函数格式为

    派生类名 (总参数列表):基类名(参数列表){派生类新增数据成员初始化语句;}

    子对象的派生类构造函数如何写呢?

    我们都知道对象应该在建立之时就初始化,但显然子对象的初始化不能在声明派生类时就对它进行,因为类是抽象类型,只是一个模型,不能有具体的数据。所以子对象的初始化是在建立派生类时通过调用派生类构造函数来实现的。在刚才的例子中增加一个班长项,班长的类型很显然就是student,所以它是一个子对象,现在构造函数如下:

    student1(int n,string nam,char s,int n1,string nam1,char s1,int a,string ad):
    		student(n,nam,s),monitor(n1,nam1,s1){
    		age=a;
    		addr=ad;
    	}


    在上面构造函数中一共有八个参数,前三个是基类构造函数的参数,第4、5、6个参数是子对象构造函数参数,最后两个是用作派生类数据成员初始化的。

    归纳一下,构造函数格式如下

    派生类构造函数名(总参数列表):基类构造函数名(参数列表),子对象名(参数列表)

    {派生类新增数据成员初始化语句}



  • 相关阅读:
    N皇后求解。万万没想到,只用一个一维数组就搞定了。还体现了回溯。
    图的存储与实现(一),使用邻接矩阵
    201671010139 2016-2017-2 《Java程序设计》关于java的初学体验总结
    题目常用解法
    【问题】如何批量导出AI文件里内嵌的图片
    安全算法基础(一)
    对安全的认知
    6月
    渗透--还是tp
    c++学习————VC报错解决方案(vc2013)
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3324815.html
Copyright © 2011-2022 走看看