m0_67505635 2022-04-01 21:02 采纳率: 100%
浏览 119
已结题

C++对象指针应该怎么写!

问题:创建一个对象指针,动态给这个指针分配连续空间构成类似数组的数据结构,数组的元素是学生对象,学生的信息包括学号、姓名和成绩(一门课成绩),在main函数中将数组元素按学生成绩从小到大的顺序排序并显示出来。(学生对象不得少于5个,显示定义构造函数和析构函数,并在里面加上测试语句)
我写的:

#include<iostream>
#include<string>
using namespace std;

class student//声明学生类
{public:
    student() = default;//默认构造函数
    student(string student_name, double student_id, double student_score)//有参构造函数
    {
        name = student_name;
        id = student_id;
        score = student_score;
    }
    ~student()//析构函数
    {
        cout << "student的析构函数调用" << endl;
    }
    void getinfo()//获取信息
    {
        cout << "名字:" << name << "\t学号:" << id << "\t成绩:" << score << endl;
    }
    double getscore()//获取成绩
    {
        return score;
    }
    string name;
    double id;    
    double score;
};

void test01()//测试
{
    student p1("james", 11111, 100);
    p1.getinfo();
}

int main()
{
    //test01();测试语句
    student info[5] = {
       student("小李",111,92),
       student("小张",112,98),
       student("小谭",113,93),
       student("小冉",114,97),
       student("小陈",115,95)
    };
    cout << "五名学生的信息为:" << endl;
    for (int i = 0; i < 5; i++)
    {
        info[i].getinfo();
    }
    cout << "五名学生按照成绩从小到大排列:" << endl;
    for (int j = 0; j < 4; j++)//按成绩从小到大将每名学生的位置交换
    {
        for (int i = 0; i < 4; i++)
        {
            if (info[i].getscore() > info[i + 1].getscore())
            {
                student temp;
                temp = info[i];
                info[i] = info[i + 1];
                info[i + 1] = temp;
            }
        }
    }
    for (int i = 0; i < 5; i++)
    {
        info[i].getinfo();
    }

    system("pause");
    
    return  0;
}

怎么创建对象指针啊!

  • 写回答

2条回答 默认 最新

  • 关注
    #include<iostream>
    #include<string>
    using namespace std;
    
    class student//声明学生类
    {
    public:
        student() {}//默认构造函数
        student(string student_name, double student_id, double student_score)//有参构造函数
        {
            name = student_name;
            id = student_id;
            score = student_score;
        }
        ~student()//析构函数
        {
            cout << "student的析构函数调用" << endl;
        }
        void getinfo()//获取信息
        {
            cout << "名字:" << name << "\t学号:" << id << "\t成绩:" << score << endl;
        }
        double getscore()//获取成绩
        {
            return score;
        }
        string name;
        double id;    
        double score;
    };
    
    void test01()//测试
    {
        student p1("james", 11111, 100);
        p1.getinfo();
    }
    
    int main()
    {
        //test01();测试语句
        student* info = new student[5]; //动态申请5个空间
        info[0] = student("小李",111,92);
        info[1] = student("小张",112,98);
        info[2] = student("小谭",113,93);
        info[3] = student("小冉",114,97);
        info[4] = student("小陈",115,95);
    
    
        
        cout << "五名学生的信息为:" << endl;
        for (int i = 0; i < 5; i++)
        {
            info[i].getinfo();
        }
        cout << "五名学生按照成绩从小到大排列:" << endl;
        for (int j = 0; j < 4; j++)//按成绩从小到大将每名学生的位置交换
        {
            for (int i = 0; i < 4; i++)
            {
                if (info[i].getscore() > info[i + 1].getscore())
                {
                    student temp;
                    temp = info[i];
                    info[i] = info[i + 1];
                    info[i + 1] = temp;
                }
            }
        }
        for (int i = 0; i < 5; i++)
        {
            info[i].getinfo();
        }
    
        system("pause");
    
        return  0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月9日
  • 已采纳回答 4月1日
  • 创建了问题 4月1日