关于 c++职工管理系统 的问题。

这下面是部分代码


#include "workManager.h"
#include "Worker.h"
#include "boss.h"
#include "employee.h"
#include "manager.h"
//用于对WorkManager类中的函数进行实现

WorkManager::WorkManager()
{
    //初始化 员工数量,职工数组指针
    this->m_EmpNum = 0;
    this->m_EmpArry = NULL;
}

void WorkManager::Show_Menu()
{
    cout << "-----------------------------------------" << endl;
    cout << "|          *欢迎使用职工管理系统*       |" << endl;
    cout << "|                                       |" << endl;
    cout << "|              0.退出系统               |" << endl;
    cout << "|              1.增加职工信息           |" << endl;
    cout << "|              2.显示职工信息           |" << endl;
    cout << "|              3.删除离职员工           |" << endl;
    cout << "|              4.修改职工信息           |" << endl;
    cout << "|              5.查找职工信息           |" << endl;
    cout << "|              6.按照编号排序           |" << endl;
    cout << "|              7.清空所有数据           |" << endl;
    cout << "-----------------------------------------" << endl;
    cout << endl;

}

void WorkManager::exitSystem()   //0.退出系统
{
    cout << "欢迎下次使用"<<endl;
    system("pause");   //按任意键
    exit(0);      //退出程序
}

void WorkManager::Add_Emp()   //1.添加职工
{
    int AddNum;
    cout << "输入需要添加的员工数量:"; cin >> AddNum;

    if (AddNum > 0)
    {
        int newSize=0;
        newSize = this->m_EmpNum + AddNum;//计算新空间的大小=原来的+添加的

        Worker ** newSpace = new Worker*[newSize];//开辟新空间 **********

        if (this->m_EmpArry != NULL) //原来就有职工的话
        {
            for (int i = 0; i < this->m_EmpNum; i++)
            {
                newSpace[i] = this->m_EmpArry[i];
            }

        }

        //批量添加新职工
        for (int i = 0; i < AddNum; i++)
        {
            int id;
            string name;
            int dSelect;

            cout << "请输入第" << i + 1 << "个员工的职工编号:";
            cin >> id;
            cout << "请输入第" << i + 1 << "个员工的职工姓名:";
            cin >> name;
            cout << "请选择第" << i + 1 << "个员工的职工岗位:"<<endl;
            cout << "1.普通员工" << endl;
            cout << "2.经理" << endl;
            cout << "3.老板" << endl;
            cin>> dSelect;
            
            Worker * worker = NULL;
            switch (dSelect)
            {
            case 1:
                worker = new Employee(id, name, 1);
                break;
            case 2:
                worker = new Manager(id, name, 2);  
                break;
            case 3:
                worker = new Boss(id, name, 3); 
                break;
            default:
                    break;
            }

            //将worker指针存到数组中 
            newSpace[this->m_EmpNum + i] = worker;
            
        }

        //释放原来的空间
        delete[] this->m_EmpArry;

        //更改新空间的指向
        this->m_EmpArry = newSpace;

        //更新新的职工人数
        this->m_EmpNum = newSize;

        this->save();  //将数据保存到文件中

        cout << "成功添加" << AddNum << "名职工!" << endl;
    }
    else
    {
        cout << "输入有误!" << endl;
    }
    system("pause");
    system("cls"); 
}

void WorkManager::save() //保存文件
{
    ofstream ofs;
    ofs.open(FILENAME, ios::out); //用输出的方式打开文件   写文件

    //将每个人的信息写入文件
    for (int i=0; i < this->m_EmpNum; i++)
    {
        ofs << this->m_EmpArry[i]->m_Id << " "
            << this->m_EmpArry[i]->m_Name << " "
            << this->m_EmpArry[i]->m_DeptId << endl;
    }
    ofs.close();
}

WorkManager::~WorkManager()
{
    if (this->m_EmpArry != NULL)
    {
        delete[] this->m_EmpArry;
        this->m_EmpArry = NULL;
    }
}

为什么将数据写入文件后,文件中的m_Deptld是乱码呢?

编译器警告: 写入“newSpace”时缓冲区溢出 是啥意思呀? 要怎么解决呢?

信息不够