高手来解决以下这道超奇怪的问题
#include <iostream.h>
class p
{
public:
int* m_pint;
~p()
{
if(m_pint)
delete[] m_pint;
}
};
void fun(p p1)
{
}
int main()
{
p p1;
p2.m_pint=new int[10];
fun(p1);
return 0;
}
最后程序会出错,问题我已经找到了,因为在调用fun函数结束后,会调用析构函数,把m_pint的内存给释放掉了,当程序结束后也会调用析构函数,但m_pint已经被释放掉了,所以会出错,我这里想问的是如何避免在函数结束时调用析构函数,或者是如何避免这种情况,大家请别回答用默认的析构函数。
[解决办法]
拷贝构造函数呢?
operator=呢?
这种情况应该实现这两个函数