【发布时间】:2018-04-05 17:23:53
【问题描述】:
当我在学习 c++ 中的队列实现时,我提出了这个声明
queue::~queue() {
if (storage)
delete [] storage;
}
那么 if (storage) 是什么意思? ,在实现中(Storage应该是一个存储数据的动态数组。那为什么我们说如果是true delete storage,是不是说存储满了?
【问题讨论】:
-
正在测试指针是否为空。
-
这并不是必须的,因为
delete在参数为空时什么都不做。 -
指针在 c++ 中可以隐式转换为
bool。nullptr转换为false和所有其他指向true的指针。 -
所以如果参数(存储)为空或赋值为零,这意味着它不包含任何内容,不需要删除它?
-
是的。虽然如前所述,
delete运算符内置了这个检查。你对指针了解多少?
标签: c++ data-structures queue