zoukankan      html  css  js  c++  java
  • 继承的构造函数

    在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;
    }
    
  • 相关阅读:
    TCP校验和
    Python8 数据库基础
    Python7 TCPIP协议与抓包
    Python6 线程与进程、网络编程、生成器与迭代器、协程、异步IO
    python2 变量与数据类型
    Python10 前端基础与爬虫
    Python11 Scrapy框架基础
    python3 函数、运算符与数据类型的常用方法
    Python9 数据库进阶
    python1 简介
  • 原文地址:https://www.cnblogs.com/lkpp/p/cpp-derived-construct.html
Copyright © 2011-2022 走看看