如何在类中将实例对象的指针清空(不通过指针变量名改变指针变量的指向)
2011-11-17 17:25
483 查看
如何在类中将实例对象的指针清空。
在编程的过程中通常new一个对象,当该对象使用完了以后调用delete该对象指针进行删除并将其赋值为NULL,以免成为野指针,如下:
#include <stdio.h>
class CUi
{
public:
CUi();
~CUi();
};
CUi::CUi()
{
}
CUi::~CUi()
{
}
void main()
{
CUi* pCUi = new CUi;
// 使用完成后
// ...
delete pCUi;
pCUi = NULL;
getchar();
}
很多时候delete pCUi后忘记写pCUi = NULL为什么delete一个地址的时候不同时将这个指针指向NULL呢?埋怨解决不了问题,咱自己来动手吧。delete某个类后,会进入该类的析构函数,咱就在这个析构函数里实现pCUi = NULL代码如下:
#include <stdio.h>
class CUi
{
public:
CUi();
~CUi();
CUi** m_pSelfPtr;
};
CUi::CUi()
{
}
CUi::~CUi()
{
*m_pSelfPtr = NULL;
}
void main()
{
CUi* pCUi = new CUi;
pCUi->m_pSelfPtr = &pCUi;
// 使用完成后
// ...
delete pCUi;
// pCUi = NULL;
getchar();
}
现在不用调用pCUi = NULL,pCUi也不会成野指针了,乖乖的指向NULL了。虽然这样写并没有省啥事,这样写主要是体验下指针,指针的指针,指针的指针的指针的魅力
在编程的过程中通常new一个对象,当该对象使用完了以后调用delete该对象指针进行删除并将其赋值为NULL,以免成为野指针,如下:
#include <stdio.h>
class CUi
{
public:
CUi();
~CUi();
};
CUi::CUi()
{
}
CUi::~CUi()
{
}
void main()
{
CUi* pCUi = new CUi;
// 使用完成后
// ...
delete pCUi;
pCUi = NULL;
getchar();
}
很多时候delete pCUi后忘记写pCUi = NULL为什么delete一个地址的时候不同时将这个指针指向NULL呢?埋怨解决不了问题,咱自己来动手吧。delete某个类后,会进入该类的析构函数,咱就在这个析构函数里实现pCUi = NULL代码如下:
#include <stdio.h>
class CUi
{
public:
CUi();
~CUi();
CUi** m_pSelfPtr;
};
CUi::CUi()
{
}
CUi::~CUi()
{
*m_pSelfPtr = NULL;
}
void main()
{
CUi* pCUi = new CUi;
pCUi->m_pSelfPtr = &pCUi;
// 使用完成后
// ...
delete pCUi;
// pCUi = NULL;
getchar();
}
现在不用调用pCUi = NULL,pCUi也不会成野指针了,乖乖的指向NULL了。虽然这样写并没有省啥事,这样写主要是体验下指针,指针的指针,指针的指针的指针的魅力
相关文章推荐
- 指向对象的常指针变量与指向常对象的指针变量区别
- objc直接通过指针访问对象实例变量
- objc直接通过指针访问对象实例变量
- objc直接通过指针访问对象实例变量
- 不能通过改变形参指针的值(形参所指向的地址)来改变实参指针的地址,实现改变实参指针所指向地址变量的值。
- XAF如何通过ControlView自动打开新建的对象实例
- container_of()如何通过结构中的某个变量获取结构本身的指针???
- 通过指向结构体变量的指针变量输出结构体变量中成员的信息
- 基类指针指向子类对象改如何理解
- 得到子类反射泛型,以及如何通过注解注入对象(仅供参考,未写实例代码)
- C语言中,如何通过函数来改变一个变量的值
- x264中open_file_yuv函数欣赏(顺便谈谈如何利用指针在被调函数中改变主调函数中变量的值)
- oc 关于对象release后 指向它的指针如何处理的问题
- 指针:改变指针的值和通过指针改变对象的值
- 7.22通过指向对象的指针访问对象中的成员
- 通过2个实例理解:不要返回指向栈内存的指针
- 如何保证一个类中的实例变量不被改变
- 如何用全局变量得到类对象的指针
- 已知一指针p,你可以确定该指针是否指向一个有效的对象吗?如果可以,如何确定?如果不可以,请说明原因。
- 如何获取变量类型及void指针中保存的指针指向什么类型的变量