//Information.h
#include <iostream>
using namespace std;
class Employee
{ private:
char *m_name;
char *m_no;
public: Employee(char *name,char *no);
~Employee()
{delete []m_name;
delete []m_no;};
void Display();};
class Leader:public Employee
{ private:
char *m_posdes;
public:
Leader(char name[50],char no[50],char posdes[50]):Employee( name,no){strcpy_s(m_posdes,50,posdes);};
~Leader()
{ delete []m_posdes;}
void Display();};
//Information.cpp
#include"stdafx.h"
#include"Information.h"
#include<iostream>
using namespace std;
Employee::Employee( char *name,char *no)
{ m_name=new char [50];
m_no =new char [50];
strcpy_s(m_name,50,name);
strcpy_s ( m_no,50,no);
}
void Employee::Display()
{ cout<<"员工的姓名"<<m_name<<endl;
cout<<"员工编号"<<m_no<<endl;}
void Leader::Display()
{ Employee::Display();
cout<<"员工职务为"<<m_posdes<<endl;
//8.1.1.cpp
#include "stdafx.h"
#include"Information.h"
#include<iostream>
using namespace std;
int main()
{ Employee *pe=new Leader("张三","1011","软件开发部部门经理");
pe->Display();
delete pe;
system("pause");
return 0;
}
class Leader :public Employee
{
private:
char *m_posdes;
public:
Leader(char name[50], char no[50], char posdes[50]) :Employee(name, no){ m_posdes = new char[50]; strcpy_s(m_posdes, 50, posdes); };
~Leader()
{
delete[]m_posdes;
}
void Display();
};
m_posdes 没有初始化变量
你的第17行strcpy_s(m_posdes,50,posdes);请问你的m_posde初始化在哪里?没有初始化怎么能拷贝呢,能生成不代表运行不会报错啊。加个初始化应该就可以了。
Leader(char name[50], char no[50], char posdes[50]) :Employee(name, no) { m_posdes=new char[50]; strcpy_s(m_posdes, 50, posdes); };
//Information.h
#include <iostream>
using namespace std;
class Employee
{
private:
char* m_name;
char* m_no;
public: Employee(char* name, char* no);
~Employee()
{
delete[]m_name;
delete[]m_no;
};
void Display();
};
class Leader :public Employee
{
private:
char* m_posdes;
public:
Leader(char name[50], char no[50], char posdes[50]) :Employee(name, no) {
m_posdes = (char*)malloc(50 * sizeof(char)); //需要修改的地方,添加字符串的初始化
strcpy_s(m_posdes, 50, posdes);
};
~Leader()
{
delete[]m_posdes;
}
void Display();
};
//Information.cpp
#include"stdafx.h"
#include"template1.h"
#include<iostream>
using namespace std;
Employee::Employee(char* name, char* no)
{
m_name = new char[50];
m_no = new char[50];
strcpy_s(m_name, 50, name);
strcpy_s(m_no, 50, no);
}
void Employee::Display()
{
cout << "员工的姓名" << m_name << endl;
cout << "员工编号" << m_no << endl;
}
void Leader::Display()
{
Employee::Display();
cout << "员工职务为" << m_posdes << endl;
}
//8.1.1.cpp
#include "stdafx.h"
#include"template1.h"
#include<iostream>
using namespace std;
int main()
{
char name[50] = "张三";
char num[50] = "1011";
char position[50] = "软件开发部部门经理";
Employee* pe = new Leader(name, num, position);
pe->Display();
delete pe;
system("pause");
return 0;
}