您的位置:首页 > 其它

关于void*类型指针的一些测试

2011-07-24 18:03 344 查看
#include <iostream>

class ProcessData
{
public:
ProcessData()
{
std::cout << "Construction" << std::endl;
}

~ProcessData()
{
std::cout << "Destruction" << std::endl;
}
};

// case1:
// result: Construction Destruction
int main()
{
ProcessData* pProcessData = new ProcessData;

if(0 != pProcessData)
delete pProcessData, pProcessData = 0;
return 0;
}

// case2:
// result: Construction
// 不调用析构函数
int main()
{
ProcessData* pProcessData = new ProcessData;
void* pvProcessData = reinterpret_cast<void*>(pProcessData);
pProcessData = 0;

if(0 != pvProcessData)
delete pvProcessData, pvProcessData = 0;
if(0 != pProcessData)
delete pProcessData, pPorcessData = 0;

return 0;
}

// case3:
// result: Construction Destruction
// 仍然调用析构函数
int main()
{
ProcessData* pProcessData = new ProcessData;
void* pvProcessData = reinterpret_cast<void*>(pProcessData);;
pProcessData = 0;

pProcessData = reinterpret_cast<ProcessData*>(pvProcessData);
pvProcessData = 0;

if(0 != pProcessData)
delete pProcessData, pProcessData = 0;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: