zoukankan      html  css  js  c++  java
  • C++入门经典-例8.3-子类显示调用父类构造函数

    1:当父类含有带参数的构造函数时,创建子类的时候会调用它吗?答案是通过显示方式才可以调用。

        无论创建子类对象时调用的是那种子类构造函数,都会自动调用父类默认构造函数。若想使用父类带参数的构造函数,则需要显式的方式。

    2:代码如下:

    // 8.3.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    
    class CEmployee                                    //定义CEmployee类
    {
    public:
        int m_ID;                                        //定义数据成员
        char m_Name[128];                                //定义数据成员
        char m_Depart[128];                                //定义数据成员
        CEmployee(char name[])                                    //带参数的构造函数
        {
            strcpy(m_Name,name);
            cout << m_Name<<"调用了CEmployee类带参数的构造函数"<< endl;    //输出信息
        }
        CEmployee()                                    //无参构造函数
        {
            strcpy(m_Name,"MR");
            cout << m_Name<<"CEmployee类无参构造函数被调用"<< endl;    //输出信息
        }
        ~CEmployee()                                    //析构函数
        {
            cout << "CEmployee类析构函数被调用"<< endl;    //输出信息
        }
    };
    
    class COperator :public CEmployee                        //从CEmployee类派生一个子类
    {
    public:
        char m_Password[128];//定义数据成员
        COperator(char name[ ]):CEmployee(name)        //显示调用父类带参数的构造函数。注意格式,自己的构造函数:父类的构造函数
        {        //设置数据成员
            cout << "COperator类构造函数被调用"<< endl;        //输出信息
        }
        COperator():CEmployee("JACK")                //显示调用父类带参数的构造函数
        {        //设置数据成员
            cout << "COperator类构造函数被调用"<< endl;        //输出信息
        }
        ~COperator()                                    //析构函数
        {
            cout << "COperator类析构函数被调用"<< endl;        //输出信息
        }
    };
    int main(int argc, char* argv[])                            //主函数
    {
        COperator optr1;                            //定义一个COperator对象,调用自身无参构造函数
        COperator optr2("LaoZhang");               //定义一个COperator对象,调用自身带参数构造函数
        return 0;
    }
    View Code

    运行结果:

  • 相关阅读:
    Java 线程之间的通讯,等待唤醒机制
    Java 死锁以及死锁的产生
    2018Java开发面经(持续更新)
    OpenFlow1.3协议wireshark抓包分析
    SDN核心技术剖析和实战指南---读书笔记
    Kafka常用命令
    安装kafka+zk-ui
    flink窗口
    flink架构原理
    安装Flink集群
  • 原文地址:https://www.cnblogs.com/lovemi93/p/7570932.html
Copyright © 2011-2022 走看看