gpt4 book ai didi

c++ - 如何在 C++ 中打印学生的成绩(类(class)学生)

转载 作者:行者123 更新时间:2023-11-28 01:16:05 26 4
gpt4 key购买 nike

我有一个学生类

字符串姓氏;unsigned int number_of_gradebook;静态整数大小;unsigned int *p = new unsigned int[size];

但是成绩数组好像没有输出

我的代码:

#include <iostream>
#include <conio.h>
#include <string>
using namespace std;

class Student {
private:
string surname;
unsigned int number_of_gradebook;
static int size;
unsigned int *p = new unsigned int[size];
public:
Student(string s, unsigned int n, static int size, unsigned int *q):surname(s) {
number_of_gradebook = n;
//unsigned int *p = new unsigned int[size];
for (int i = 0; i++; i < size) {
p[i]=q[i];
}
}
Student() {}
~Student() { delete[]p; }

//friend std::ostream& operator<<(std::ostream&, const Student);
string GetSurname() const { return surname; }
unsigned int GetNumOfGrdb() const { return number_of_gradebook; }
unsigned int GetMarks() const { return *p; }
void Print_Student();

};

int Student::size=0;

void Student :: Print_Student() {
cout << "Student: " << surname << "\t" << number_of_gradebook << endl;
if (size) {
for (int i = 0; i++; i < size) {
cout << p[i] << "\t";
}
}
}

class Group {
Student *s;
int count;
public:
Group(int n=0) {
s = new Student[count = n];
}
~Group() { delete[]s; }
friend void AddStudent();
friend void DeleteStudent();
friend void FindAveragePoint();
friend void PrintFiveBest();
void output() {
cout << s << endl;
}
};

int main() {
Student A("Ivanov", 45368400, 5, new unsigned int[5] {3,4,4,5,3});
A.Print_Student();
cout << A.GetMarks();
system("pause");
}

有什么建议吗?

最佳答案

假设这是一些作业,并且不允许您使用 STL。如果你被允许使用 STL,那么抛开所有手动内存管理并使用 std::vector反而。如果没有,请继续阅读。

成员(member)size总是0。而且size的设计有问题.如果它是静态的(对于 Student 的所有实例都相同)那么为什么会有参数 size在什么都不做的构造函数中?我想size应该是普通成员而不是静态成员。

Student(string s, unsigned int n, int size, unsigned int *q) : 
surname(s),
number_of_gradebook(n),
size(size),
p(new unsigned int[size])
{
...
}


另一个问题是这个困惑的循环: for (int i = 0; i++; i < size)
应该是 for (int i = 0; i < size; i++)

小心,您会在代码中进一步重复此错误。


还有这一行:s = new Student[count = n];可能有用,但它没有做,你可能认为它做的是安静难以阅读,应该分成两行,或者更好,在初始化列表中:

Group(int n) : 
count(n),
s(new Student[count])
{...}

请记住,new X[0]无效。所以最好删除默认值或使用 0 以外的值! 或者更好:使用 vector 。

关于c++ - 如何在 C++ 中打印学生的成绩(类(class)学生),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58680296/

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