我遇到很多次代码,其中在构造函数和析构函数中调用std :: vector类成员的std :: vector :: clear()。std :: vector :: clear()在构造函数和析构函数中
我不明白为什么它的需要:
- 构造 - STD型的类成员:: vector的默认是空的,所以没有必要要求明确()。
- 析构函数 - 类型std :: vector的类成员将作为包含它的对象的标准销毁的一部分被销毁。作为矢量销毁的一部分,所有值对象包含在其中将被销毁(如果堆分配了指向内存的指针,则应该将它们手动删除),因此再次不需要调用clear()。
我错过了什么吗?
不错的术语,'巫术编程':) – xtofl 2009-10-19 20:51:49
设置一个指针为null不是巫术,它对调试有很大的帮助。也可以防止你删除同一个指针两次,但没有人会这样做 - 对吧? – 2009-10-19 21:01:25
如果有的话,你想知道你删除了同一个指针两次。最好是大声地失败(并且了解它)而不是意外地成功(掩盖一个会回来咬你的bug) – 2009-10-19 21:04:17