不是都在构造函数里初始化了嘛
#include
using namespace std;
const int N = 20; //最多样本数量
class CScores
{
public:
CScores()
{
m_pScores = 0;
m_nLength = 0;
m_fAverage = 0;
m_nFailed = 0;
}
CScores(const int* pArray, int length)
{
int* pArray = new int[10];
if (pArray) {//pArray非空,则复制内容
memcpy_s(m_pScores, sizeof(int) * length, pArray, sizeof(int) * length);//内容复制
}
else {
memset(m_pScores, 0, sizeof(int) * length);
}
CountAverageFailed();
}
CScores(const CScores&h):pArray(h.pArray),m_nLength(h.m_nLength)
{
int* pArray=new int [10];
if (pArray) {//pArray非空,则复制内容
memcpy_s(m_pScores, sizeof(int) * m_nLength, pArray, sizeof(int) * m_nLength);//内容复制
}
else {
memset(m_pScores, 0, sizeof(int) * m_nLength);
}
CountAverageFailed();
}
~CScores() { delete pArray; }
void PrintScores();
float GetAverage() { return this->m_fAverage; }
int GetFailed() { return this->m_nFailed; }
int GetL() { return m_nLength; }
int GetMax();
int GetMin();
private:
void CountAverageFailed(); //内部函数,统计平均分和不及格人数
private:
int* m_pScores; //分数s
int m_nLength; //score的实际数量
float m_fAverage; //平均分
int m_nFailed; //不及格人数
int* pArray = new int[10];
};
你定义了好几个构造函数,却只在一个构造函数里初始化。实际使用时,不知道你会用哪个构造函数,如果你是用了其他构造函数而不是第一个,那么这些初始化是不是就没有进行了?