面向对象CPP1
#include <stdio.h>
#include <memory.h>
typedef struct taglist
{
int *m_pList;
int m_iUsedLength;
int m_iTotalLength;
}LIST;
bool Init_List(LIST *pList, int iLength)
{
if(NULL != pList->m_pList)
{
delete[] pList->m_pList;
pList->m_pList = NULL;
}
pList->m_pList= new int[iLength];
if(NULL == pList->m_pList)
{
return false;
}
pList->m_iTotalLength = iLength;
pList->m_iUsedLength = 0;
return true;
}
void Destory_List(LIST *pList)
{
if(NULL == pList)
{
return;
}
if(NULL == pList->m_pList)
{
if(0 != pList->m_iUsedLength || 0 != pList->m_iTotalLength)
{
pList->m_iUsedLength = 0;
pList->m_iTotalLength = 0;
}
return;
}
delete[] pList->m_pList;
pList->m_pList = NULL;
pList->m_iUsedLength = 0;
pList->m_iTotalLength = 0;
return ;
}
bool Input_List(LIST *pList, int iValue)
{
if(NULL == pList)
{
return false;
}
if(NULL == pList->m_pList)
{
return false;
}
if(pList->m_iUsedLength >= pList->m_iTotalLength)
{
return false;
}
pList->m_pList[pList->m_iUsedLength] = iValue;
pList->m_iUsedLength++;
return true;
}
void Output_List(LIST *pList)
{
if(NULL == pList)
{
printf("%s\r\n", "list not exist");
return;
}
if(NULL == pList->m_pList || 0 == pList->m_pList)
{
printf("%s\r\n", "list is empty");
return;
}
for(int i = 0; i<pList->m_iUsedLength; i++)
{
printf("%d\t", pList->m_pList[i]);
}
return;
}
int main(int argc, char *agrv[])
{
LIST listA,listB;
memset(&listA, 0, sizeof(listA));
int i=0;
Init_List(&listA, 10);
for(i=0; i<10; i++)
{
Input_List(&listA, i);
}
listA.m_iUsedLength = 0; //缺点,成员变量没有被隐藏。
//listA.m_iTotalLength = 0; //缺点同上
//listA.m_pList = NULL; //同上
//其它缺点:实例化的变量都是全局的。
Output_List(&listA);
Destory_List(&listA);
return 0;
}