首页 / 软件开发 / Delphi / Delphi2009初体验 - 语言篇 - 智能指针(Smart Pointer)的实现
Delphi2009初体验 - 语言篇 - 智能指针(Smart Pointer)的实现2012-02-15 博客园 杨芹勍一、回顾历史在c++中,对象可以创建在栈里,也可以创建在堆里。如:class CTestClass
{
public:
CTestClass()
{
printf(“Create”);
}
void DoPrint() {}
~CTestClass()
{
printf(“destroy”);
}
}
// 以下代码创建栈对象CTestClass test;
test.DoPrint();
栈对象生命周期由后台管理。当方法结束时,栈对象会从栈中弹出,编译器会自动销毁栈所弹出的对象。// 以下代码创建堆对象CTestClass* test = new CTestClass();
test->DoPrint();
堆对象保存在堆中,堆对象生命周期不受后台管理,程序员必须自己手动的释放堆对象,否则会造成内存泄露:delete test;
test = NULL;
Pascal语言从OOP Pascal开始支持面向对象,也就是说,OOP Pascal支持创建对象了。OOP Pascal和c++一样,也可以分别创建栈对象和堆对象: