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个参数是子对象构造函数参数,最后两个是用作派生类数据成员初始化的。

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

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

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



  • 相关阅读:
    工作流学习——Activiti流程变量五步曲
    Rational Performance Tester(RPTv8.6) 在launch Schedule 时一直卡在 29%
    19、Cocos2dx 3.0游戏开发找小三之Action:流动的水没有形状,漂流的风找不到踪迹、、、
    【设计模式】责任链模式
    redis源代码分析(5)——aof
    Servlet基础梳理(四)
    SQL-W3School-高级:SQL 数据类型
    SQL-W3School-高级:SQL NULL 函数
    SQL-W3School-高级:SQL NULL 值
    SQL-W3School-高级:SQL Date 函数
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3324815.html
Copyright © 2011-2022 走看看