鱼C论坛

 找回密码
 立即注册
查看: 1160|回复: 2

worker类的头文件,然后工具自动把构造和析构函数生成的,就没有去删掉,为什么后...

[复制链接]
发表于 2023-9-4 23:57:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#pragma once
#include <string>
using namespace std;
#include<iostream>

class Worker
{
public:
        Worker();
        ~Worker();

        virtual void showInfo() = 0;//显示职工信息
        virtual string getDepName() = 0;//获取职工部门


        int m_id;//职工编号
        string m_name;//职工姓名
        int m_departmentid;//职工所在部门编号

private:

};

Worker::Worker()
{
}

Worker::~Worker()
{
}
#pragma once
#include "worker.h"
using namespace std;
#include <iostream>


class Employ:public Worker
{
public:
        Employ(int id, string name, int depid);

        virtual void showInfo();//显示职工信息
        virtual string getDepName();//获取职工部门

private:

};


我写了一个worker类的头文件,然后工具自动把构造和析构函数生成的,就没有去删掉,为什么后面的Empoly类在继承worker类之后,执行程序会报图中的错,把worker类的析构和构造删掉就没问题,报错的BOSS类Manager类都是和Employ一样的定义方式
11.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-4 23:58:14 | 显示全部楼层
在C++中,当一个类被继承时,派生类会自动调用基类的构造函数和析构函数来初始化和清理基类的成员。在你的代码中,Worker类的构造函数和析构函数被自动生成,并且没有被删除。

当你创建Employ类的实例时,它会自动调用Worker类的构造函数和析构函数。然而,由于Worker类的构造函数和析构函数是纯虚函数(通过"= 0"来声明),这会导致编译错误。

为了解决这个问题,你可以将Worker类的构造函数和析构函数实现为纯虚函数的默认实现,或者提供具体的实现。例如,你可以在Worker类的头文件中添加以下代码:
Worker::Worker() = default;
Worker::~Worker() = default;

这样,Worker类的构造函数和析构函数将有默认的实现,Employ类就可以正常继承和使用了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-5 23:17:37 | 显示全部楼层
isdkz 发表于 2023-9-4 23:58
在C++中,当一个类被继承时,派生类会自动调用基类的构造函数和析构函数来初始化和清理基类的成员。在你的 ...

由于Worker类的构造函数和析构函数是纯虚函数(通过"= 0"来声明),这会导致编译错误,这里为什么Worker类的构造和析构时纯虚函数啊,在代码里面这两个函数没有用过 =0 来声明
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 01:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表