继承的构造函数
在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;
}
分类:
c++
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 协程本质是函数加状态机——零基础深入浅出 C++20 协程
· 编码之道,道心破碎。
· 记一次 .NET 某发证机系统 崩溃分析
· 微服务架构学习与思考:SOA架构与微服务架构对比分析
· tomcat为什么假死了
· 知名开源项目Alist被收购!惹程序员众怒,开团炮轰甲方
· 突发,小红书开发者后门被破解?!
· 历时半年,我将一个大型asp.net的零代码快速开发平台转成了java
· Windows11 关闭搜索栏中的Web网页搜索
· [原创]《C#高级GDI+实战:从零开发一个流程图》第03章:画一个线,连接两个矩形!