SO是一场狗屎秀。感谢您的搭车。
C++11 标准并不要求 GC 存在,但在未来的版本中可能会存在。
它不会强加于你——只有当你要求时它才会存在。它不会收集您的普通指针,也不会收集当前的智能指针。所以,它仍然是“不使用 - 不付费”。它只会对您明确要求的指针起作用,因此您的示例仍然会像现在一样工作。
引用计数 (#1) 通常是最好的,并且它是 C++ 的默认值 GC 的形式。但也有理由(而不是相反)想要懒惰 C++ 中的标记-清除 (#2) 垃圾回收来处理 ref 计数无法处理,包括潜在周期的情况 不可避免的(在某些情况下,某些对象可能自然地被共享, 但随后可能会互相引用)和无锁 ABA 问题。
通过“引用计数”,Sutter 指的是
std::shared_ptr
和类似的东西。