- 论坛徽章:
- 0
|
- myclass::clear()
- {
- if(m_ptr) delete [] m_ptr;
- myclass();
- }
- 中的 myclass(); 仅仅是构造了一个myclass类的临时对象罢了。
复制代码
想要对分配好的内存用类构造函数初始化它可以用定位new操作符:
- // 好像是这个头文件
- #include <new>
- ...
- void myclass::clear()
- {
- if (m_ptr)
- delete[] m_ptr;
- new(this) myclass;
- }
复制代码
不过我觉得还是不要期待用构造函数去复位类成员,也许这样更好些:
- class myclass {
- public:
- myclass()
- : m_ptr(NULL), m_num(0)
- {
- }
- void clear()
- {
- delete[] m_ptr;
- reset();
- }
- private:
- void reset()
- {
- m_ptr = NULL;
- m_num = 0;
- }
- ....
- };
复制代码
我还是觉得将 delete[] ptr 跟 ptr = NULL 分开写不好,容易遗漏

[ 本帖最后由 jaffaz 于 2007-5-22 23:36 编辑 ] |
|