#include <iostream>
using namespace std;
class A
{
public:
A();
~A();
void SetNextPtr(A *ptr)
{
pNext = ptr;
}
private:
double m_d1;
A *pNext;
};
A::A()
{
pNext = NULL;
m_d1 = 0.0;
}
A::~A()
{
if(pNext)
{
delete pNext;
pNext = NULL;
}
}
int main()
{
// 下面的两行代码调用类A的构造函数
A *ptr1 = new A();
A *ptr2 = new A();
cout << sizeof(A) << endl;
cout << sizeof((*ptr1)) << endl;
ptr2->SetNextPtr(ptr1);
ptr1->SetNextPtr(ptr2);
// delete ptr1; 会调用ptr1指向类的析构函数,析构函数里面又调用delete
// 造成一个指针被删除2次以上,程序抛出异常
delete ptr1;
delete ptr2;
system("pause");
return 0;
}
pointer_1
最新推荐文章于 2022-08-25 09:26:42 发布