首页 > 解决方案 > 当我删除一个指针并且我没有立即分配任何东西时,我应该使用 NULL 还是 nullptr?

问题描述

改写标题,假设我已经删除了指针*ptr,并且我想稍后只在我知道它是打开的时为其分配新的东西,我应该用NULLor分配它nullptr吗?如果两者都不好,那还有什么更好的方法呢?

根据我的研究,NULL可以是 int 和指针类型,在执行重载函数时可能会搞砸,而nullptr只是指针类型。但是,我仍然不知道何时使用哪个。我应该总是使用nullptr我未分配的指针吗?如果是这样,目的是NULL什么?

(顺便说一句,这是我在 Stack Overflow 上的第一个问题,如果我把它贴在不属于它的地方,请原谅我)

编辑:至于智能指针,我现在不能真正使用它们,因为我可能会被我们的教授骂。

标签: c++

解决方案


您根本NULL应该在 C++ 中使用。如果需要空指针值,请使用nullptr.

NULL的目的是什么?

它是从 C 标准库继承的残余物。它在 C++ 中没有其他用途,除了使一些 C 代码有效 C++ 而无需更改 - 这曾经是 C++ 语言设计的重要组成部分,但随着这两种语言的分歧,多年来已经失去了它的重要性。


如果两者都不好,那还有什么更好的方法呢?

通常最好确保删除的指针是其超级对象正在被销毁的成员。在这种情况下,不需要为指针分配任何值,因为它即将停止存在。有关更多详细信息,请参阅 RAII 成语。


您应该避免使用裸拥有的指针,因此避免使用newanddelete直接。


推荐阅读