C++ 控制台代码运行时的分段错误

Segmentation fault during runtime of console code in C++

我正在尝试制作一个简单的控制台学生详细信息显示系统,其中有 2 个 classes,class student(Base class) 以及用于名称和注册的成员变量number 和 class studentAthlete(Derived class) 与运动类型字符串。 代码编译成功,但在运行时只询问学生详细信息,但不会显示我调用 identify() 函数时预期的详细信息。 在代码块上,错误可能不会显示,但在 https://www.onlinegdb.com/online_c++_compiler 等在线编译中,它表明代码中存在分段错误。 请在必要时提供帮助。

我的代码完全(完整)如下:

#include <iostream>
using namespace std;

/**Base class**/
class student
{
protected:
    string studName, studRegNum;
public:
    student(string stdName, string regNo);
    /**To define friendly class that is
    Common to both classes**/
    friend void identify();
};
/**constructor for class student**/
student::student(string stdName, string regNo)
{
    studName = stdName;
    studRegNum = regNo;
}
/**Derived class**/
class studentAthlete : public student
{
private:
    string member_sport;
public:
    /**To create constructor for class studentAthlete within class**/
    studentAthlete(string student_sport):student(studName, studRegNum)
    {
        member_sport = student_sport;
    }
    /**To define friendly class that is
    Common to both classes**/
    friend void identify();
};

/**To display student information**/
void identify()
{

    studentAthlete sa(sa.member_sport);
    cout<<"Student Name: "<<sa.studName<<endl;
    cout<<"Student Registration Number: "<<sa.studRegNum<<endl;
    cout<<"Student Sport: "<<sa.member_sport<<endl;

}

int main()
{
    string StudentName, StudentRegistrationNo, StudentSport;
    /**To get & set student name from user**/
    cout<<"Enter student name: "<<endl;
    cin>>StudentName;

    /**To get & set Student Registration No from user**/
    cout<<"Enter Student Registration No: "<<endl;
    cin>>StudentRegistrationNo;

    /**To get & set Student Sport from user**/
    cout<<"Enter Student Sport: "<<endl;
    cin>>StudentSport;

    /**To pass student values to their respective constructors**/
    student st(StudentName,StudentRegistrationNo);
    studentAthlete sa(StudentSport);

    /**To display student information**/
    identify();
    return 0;
}

您正在将未初始化的成员传递给 Student 构造函数。
这将导致未定义的行为。

您需要将姓名和号码参数添加到运动员的构造函数并将它们传递给 Student