• 继承的构造函数


    在C++11新标准中,派生类能够重用其直接基类的构造函数

    #include <iostream>
    using namespace std;
    
    struct Base
    {
        Base() { cout << "construct" << endl; }
    };
    struct Derived : public Base
    {
        using Base::Base; //继承Base的构造函数
    };
    
    int main()
    {
    	Derived d;
    	return 0;
    }
    

    一个构造函数的声明不会改变该函数的访问级别

    #include <iostream>
    using namespace std;
    
    struct Base
    {
        Base() { cout << "construct" << endl; }
    };
    struct Derived : public Base
    {
       private://不会改变继承的构造函数的访问级别,仍然是public
         using Base::Base; 
    };
    
    int main()
    {
    	Derived d;
    	return 0;
    }
    

    当一个基类的构造函数含有默认实参,这些实参并不会被继承。相反,派生类将获得多个继承的构造函数

    #include <iostream>
    using namespace std;
    
    struct Base
    {
        Base(int x=1) { cout << "construct" <<x<< endl; }
    };
    struct Derived : public Base
    {
        //实际上继承了2个构造函数
         using Base::Base; 
    };
    
    int main()
    {
    	Derived d;
    	Derived d1(2);
    	return 0;
    }
    

    如果派生类定义的构造函数与基类的构造函数有相同的参数列表,该构造函数不会被继承

    #include <iostream>
    using namespace std;
    
    struct Base
    {
        Base() { cout << "construct" << endl; }
        Base(int) { cout << "construct int" << endl; }
    };
    struct Derived : public Base
    {
    
        using Base::Base;
        //不会继承Base的默认构造函数
        Derived() { cout << "Derived class construct" << endl; };
    };
    
    int main()
    {
        Derived d;
        Derived d(1);
        return 0;
    }
    
  • 相关阅读:
    Hadoop集群VSFTP和SecureCRT安装配置
    Hadoop集群完全分布式坏境搭建
    Hadoop集群坏境搭建配置
    Hadoop集群坏境CentOS安装
    Pr视频剪辑基础技巧学习
    SAN和NAS之间的基本区别
    原始容量、可用容量和有效容量的区别
    解释一下什么是网盘与云盘
    纠错技术之FEC(向前纠错)
    分布式存储的冗余类型(N+2:1)
  • 原文地址:https://www.cnblogs.com/lkpp/p/cpp-derived-construct.html
Copyright © 2020-2023  润新知