C++为何delete操作不直接把指针设置成nullptr

如题,delete指针后如果不设置成nullptr就会导致该指针指向一块无效的内存,从而发生不可预知的错误。那为何C++编译器不直接在delete操作里把指针设置成nullptr呢?

额,这里的把指针设置为 nullptr, 是指

  1. delete p 后把 p 置空
  2. 所有指向被删除内存的指针都置 nullptr。

如果是 1,那纯属脱裤子放屁,都 delete 还拿着那指针干嘛,反之如果要用为什么要 delete。 如果是 2 的话,这样做的目的无非就是让 c++ 像 gc 语言一样能够通过引用来查看对象的状态(毕竟 C/C++ 无法通过 p != nullptr 来判断指向的对象是否析构),这在 C++ 早就有更好的解决方案了,用 shared_ptr/weak_ptr。

毕竟把指针置空也是有开销的