這是一位教授吹噓的同學的正確代碼,我無法理解爲什麼它需要一個雙重構造函數,我原本只有第一個函數,並且無法弄清楚它需要兩個滯後於我的作爲一個專業的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)'任何地方 –