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

    运行结果:

  • 相关阅读:
    VS2008编写MFC程序--使用opencv2.4()
    November 02nd, 2017 Week 44th Thursday
    November 01st, 2017 Week 44th Wednesday
    October 31st, 2017 Week 44th Tuesday
    October 30th, 2017 Week 44th Monday
    October 29th, 2017 Week 44th Sunday
    October 28th, 2017 Week 43rd Saturday
    October 27th, 2017 Week 43rd Friday
    October 26th, 2017 Week 43rd Thursday
    October 25th, 2017 Week 43rd Wednesday
  • 原文地址:https://www.cnblogs.com/lovemi93/p/7570932.html
Copyright © 2011-2022 走看看