继承的构造函数

2018-02-10 20:14:30来源:cnblogs.com作者:,,,沙子,,,人点击

分享

在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;}

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台