这是一位教授吹嘘的同学的正确代码,我无法理解为什么它需要一个双重构造函数,我原本只有第一个函数,并且无法弄清楚它需要两个滞后于我的作为一个专业的C++ 2构造函数和类中的析构函数
class Studentrecords
{
private:
struct student
{
string name;
string address;
int ID;
double gpa;
};
student *stackArray;
int stackSize;
int top;
public:
Studentrecords();
Studentrecords(int size);
~Studentrecords();
void push(string name, string address, int id, double gpa);
void pop();
bool isFull() const;
bool isEmpty() const;
void display();
};
Studentrecords::Studentrecords(int size)
{
stackArray = new student[size];
top = 0;
}
Studentrecords::Studentrecords()
{
stackSize = 25;
stackArray = new student[stackSize];
top = 0;
}
Studentrecords::~Studentrecords()
{
delete [] stackArray;
}
那么,这只是越野车。从'int'初始化不会初始化'stackSize'成员,没有复制/移动构造函数,也不会有复制/移动赋值运算符,并且允许从int到Student记录的隐式转换。 –
为什么stackSize未初始化?..我看到stacksize = 25可以工作吗? –
该行不在'Studentrecords :: Studentrecords(int size)'任何地方 –