没有与参数列表匹配的构造函数_C++知识点 42:继承中的“构造函数”和“析构函数”...

论坛 期权论坛 脚本     
匿名技术用户   2021-1-10 18:09   1063   0

子类不会继承父类的“构造函数”和“析构函数”
实例化子类对象时候,调用顺序:
构造函数:先调用父类的,再调用子类的
析构函数:与构造函数调用顺序正好相反(先调用子类的,再调用父类的)
---------------------------------------------------------------------------------------------------注意:当父类中构造函数有参,子类需要用初始化列表的方式,指定调用父类的哪个构造函数
#define _CRT_SECURE_NO_WARNINGS
#include
using namespace std;
class Base // 父类
{
public:
Base(int a) { // 父类只有有参构造,给父类维护的值初始化
this->m_A = a;
}
public:
int m_A;
};-------------------------------------------------------------------------------------
class Son : public Base // 子类
{
public: /*
Son(int a) //无法创建, 子类通过有参构造实例化对象,一定需要调用父类的默认构造
{ 因为父类中没有默认构造,系统也没有默认提供
this->m_A = a;
}
*/

// 解决方式1:在父类中 手动添加 默认构造函数,
// 解决方式2:
Son(int a = 10) : Base(a) {} // 使用“参数列表”形式,调用父类的有参构造函数,给父类维护的值初始化
};---------------------------------------------------------------------------------------
int main()
{
Son s;
cout << s.m_A << endl; // 因为默认参数 结果: 10
Son s1; // 此时 s1.m_A = 10
s1.m_A = 50;
cout << s1.m_A << endl; // 结果: 50

Son s3(100);
cout << s3.m_A << endl; // 结果: 100
}

983ff3b1ec54561e21f2a041e40939b0.png
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP