首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

帮忙看看,这个数据成员如何释放内存

2012-02-28 
帮忙看看,这个数据成员怎么释放内存classV{public:V(int100)V(constV&)display()//用于输出buffer指向

帮忙看看,这个数据成员怎么释放内存
class   V
{
public:
      V(int   =100);
      V(const   V   &);
      display();       //用于输出   buffer   指向空间里的数据。
      setV();             //用于向   buuffer   指向的空间里面输入数据
      ~V();
pretected:
      int   *buffer;
      int   size;
};
V::V(int   s)
{
      size=s;
      buffer=new   int[size];
}
V::V(const   V&   v1)
{
      delete   []   buffer;
      size=v1.size;
      buffer=v1.size;
}
V:~V()
{
      delete   []   buffer;
}

void   main()
{
      V   a(10);
      V   b(a);
      a.setV();
      b.display();
}

这里用拷贝构造函数   使得b.buffer指向了a.buffe所指的空间,目的是b可以看到a的内容。   但是这样子由于析构函数,这个   buffer   就被重复释放了。有什么办法解决么?

[解决办法]
用指针:V *b = &a; 不用拷贝构造函数

要不就:

V:~V()
{
if(buffer != NULL)
delete [] buffer;
}

热点排行