0x00007FFA01CC56D5 (ucrtbased.dll)处(位于 test.exe 中)引发的异常: 0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突。
然后后面那个new的指针也没有运行成功
这个应该怎么解决啊,代码如下
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class Teacher {
private:
char NAME[30], GENDER[20], DEPT[20];
int AGE;
public:
void Register(const char name[30], const char gender[20], int age, const char dept[20]) {
strcpy(NAME, name);
strcpy(GENDER, gender);
AGE = age;
strcpy(DEPT, dept);
}
void ShowMe();
Teacher(const char* name, const char* gender, int age, const char* dept) {
strcpy(NAME, name);
strcpy(GENDER, gender);
AGE = age;
strcpy(DEPT, dept);
cout << "正在生成1个教师类对象,姓名为" << NAME << endl;
}
~Teacher() {
cout << "正在注销1个教师类对象,姓名为" << NAME << endl;
}
};
void Teacher::ShowMe() {
const char *m = "male";
const char* f = "female";
cout << "该教师姓名为:" << NAME << ",性别为:" << GENDER << ",年龄为:" << AGE << endl;
if (strcmp(GENDER, m) == 0)
cout << "该教师还有" << 60 - AGE << "年退休" << endl;
else if (strcmp(GENDER, f) == 0)
cout << "该教师还有" << 55 - AGE << "年退休" << endl;
}
int main() {
Teacher t1[2]{ {"TOM","male",30,"计算机院"},{"JERRY","female",30,"计算机院"} };
t1[0].ShowMe();
t1[1].ShowMe();
Teacher** p = new Teacher * [2];
p[0]->Register("张三", "male", 30, "计算机院");
p[1]->Register("李四", "female", 30, "计算机院");
p[0]->ShowMe();
p[1]->ShowMe();
delete[]p;
return 0;
}