gpt4 book ai didi

c++ - 为什么这个程序崩溃了?我错误地分配了内存吗?

转载 作者:行者123 更新时间:2023-11-30 02:36:37 24 4
gpt4 key购买 nike

问题

设计一个带有姓名和员工编号的员工类。派生经理、科学家和劳工类。经理类有额外的属性 title 和 dues。科学家类有额外的属性 number of publications。 Laborer 类没有任何额外的东西。这些类具有设置和显示信息的必要功能。

我的解决方案

#include<iostream>
#include<cstring>
using namespace std;
class employee
{
protected:
char *name;
int number;
public:
employee()
{
cout<<"enter employee name \n";
cin>>name;
cout<<"enter employee number \n";
cin>>number;
}
void display()
{
cout<<"name \t"<<name<<endl;
cout<<"number \t"<<number<<endl;
// inside class function is a inline function
}
};
class manager: private employee
{
float due;
char *title;
public:
manager( )
{
cout<<"due\t "<<endl;
cin>>due;
cout<<"title\t"<<endl;
cin>>title;
fflush(stdin);
}

void display()
{
employee::display(); //inside class function is a inline function
cout<<"due\t"<<due<<endl;
cout<<"title\t"<<title<<endl;
//inside class function is a inline function
}
};
class labour :private employee
{
public:

void display()
{
employee::display(); //inside class function is a inline function
}
};
class Scientist :private employee
{
int number;
public:
Scientist()
{
cout<<"publication number "<<endl;
cin>>Scientist::number;
}

void display()
{
employee::display();
cout<<" pub number "<<Scientist::number<<endl;
fflush(stdin);
} //inside class function is a inline function

};

int main()
{
manager m;
m.display();
Scientist s;
s. display();
labour l;
l.display();
return 0;
}

最佳答案

您没有为titlename 分配任何内存,因此您无法从std::cin 读取它们。您应该使用 std::string 而不是使用 char* ,它将为您完成所有分配:

std::string title;
std::string name;

关于c++ - 为什么这个程序崩溃了?我错误地分配了内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32496761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com