class CListNode
{
public:
CListNode();
CListNode(int i);
int m_Data;
CListNode *m_Next;
};
CListNode::CListNode():m_Data(0), m_Next(0)
{
}
CListNode::CListNode(int i):m_Data(i), m_Next(0)
{
}
class CList
{
public:
CList();
CList(int i);
CList(CList *pNew);
~CList();
int NextNode();
void _InsertAfter(int iNew);
void _DeleteAfter();
void _DeleteFront();
void _PrintData();
CListNode m_Head;
private:
CListNode *c_m_Head;
int m_iCount;
protected:
};
CList::CList()
{
m_Head.m_Next = NULL;
c_m_Head = &m_Head;
cout<<"1:"<<&m_Head<<endl;
}
CList::CList(int i)
{
_InsertAfter(i);
}
CList::~CList()
{
m_Head = *c_m_Head;
CListNode *p;
while( m_Head.m_Next!=NULL )
{
p = m_Head.m_Next;
m_Head = *(p->m_Next);
delete p;
}
}
void CList::_InsertAfter(int iNew)
{
CListNode *p= new CListNode(iNew);
p->m_Next = m_Head.m_Next;
m_Head.m_Next = p;
}
void CList::_DeleteFront()
{
}
void CList::_DeleteAfter()
{
CListNode *p;
p = m_Head.m_Next;
m_Head.m_Next = p->m_Next;
delete p;
}
void CList::_PrintData()
{
m_Head = *c_m_Head;
while( m_Head.m_Next!=NULL )
{
m_Head = *(m_Head.m_Next);
cout<<m_Head.m_Data<<endl;
}
}
int main()
{
CList *clist = new CList;
int i;
for(i=0; i<10; i++)
{
clist->_InsertAfter(i);
}
clist->_PrintData();
delete clist;
return 0;
}
先看析构函数和_PrintData()中的代码中的取地址可以说是一样的
可以发现,在clist->_PrintData();时,还可以顺利打出。
但是析构里连while都进不了.
跟踪m_Head地址发现是一样的。但是在分构里面m_Head.m_Next已经是NULL了
这里的原因是,delete时,先把clist的非指针变量给释放掉了。
所以要注意这样变量和指针混淆的情况
分享到:
相关推荐
在类中的位置不同 成员变量:在类中方法外 局部变量:在方法内或者方法声明处 在内存中的位置不同 成员变量:在堆内存中 局部变量:在栈内存中 ... 成员变量和局部变量的名称可以一致,方法调用的时候采取就近原则
变量可以分为全局变量、静态全局变量、静态局部变量和局部变量 按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的全局数据区,局部变量存放在内存的栈区 按作用域分:全局变量在整个工程文件内都...
全局变量,静态变量,局部变量的区别,以及其内存分配情况,栈和堆的区别
全局变量、局部变量、静态全局变量、静态局部变量的区别
block,局部变量,全部变量,static的静态变量关系
对于全局变量和局部变量,即使变量名相同,但是因为定义在不同的作用域内,其本质上也是不同的变量。 实例:局部变量和全局变量的对比,并输出结果。 具体实现: total = 0 # 这是一个全局变量 def sum( arg1, arg2 ...
通过代码的运行,并理解代码,明白C中的局部变量与本地变量的区别
1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ; 局部变量可以与全局变量同名, 在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器 而言...
Java 面向对象中的两类 变量 : 成员变量和局部变量
易语言通过指针读写内存 .版本 2 .子程序 _按钮_复制内存_被单击 .局部变量 地址, 整数型 .局部变量 缓冲区, 文本型 地址 = 写内存 () 缓冲区 = 取空白文本 (API_取文本长度 (地址) + 1) API_复制内存 (缓冲区...
本片文章,将提到4个概念:1、普通变量;2、指针变量;3、内存(内存空间);4、地址。
成员变量和局部变量的区别
VB 局部变量举例 VB 局部变量举例 VB 局部变量举例
c语言中详细解说局部变量和全局变量的关系和作用,让你明白!
静态全局变量,静态局部变量,全局变量,局部变量静态全局变量,静态局部变量,全局变量,局部变量
本文详细地讲解了c语言全局变量和局部变量问题,仔细详尽
西门子触摸屏HMI变量的指针化索引应用示例详解 变量的指针化 索引应用
介绍VB6.0 中静态变量和局部变量的案例
指针变量,指针与数组, 指针与函数, 字符串与指针,指向指针的指针
CC++中的静态全局变量,静态局部变量,全局变量,局部变量的区别