在C++11的语言特性列表中,有以下内容:
为什么标准委员会引入了这个垃圾回收C++语言特性?
C++真的需要GC吗?RAII不是一种非常优秀的模式(可以统一用于内存和非内存资源,如套接字、文件、纹理等)吗?
GC会破坏使用RAII的C++代码模式的统一性吗?
有些人说,GC可以方便地打破循环依赖关系,但是使用像
在抛出异常的情况下会发生什么?堆栈展开语义将如何修改以考虑GC?
是否也会引入类似于C#的
此外,假设在C++中引入了GC,指针语法会有所不同吗?例如,我们是否会有类似于C++/CLI或C++/CX扩展中的帽子状“指针”
(但似乎GCC和Clang都没有实现。)最小支持垃圾回收和基于可达性的泄漏检测
为什么标准委员会引入了这个垃圾回收C++语言特性?
C++真的需要GC吗?RAII不是一种非常优秀的模式(可以统一用于内存和非内存资源,如套接字、文件、纹理等)吗?
GC会破坏使用RAII的C++代码模式的统一性吗?
有些人说,GC可以方便地打破循环依赖关系,但是使用像
weak_ptr
这样的智能指针不就可以了吗?在抛出异常的情况下会发生什么?堆栈展开语义将如何修改以考虑GC?
是否也会引入类似于C#的
IDisposable
模式?此外,假设在C++中引入了GC,指针语法会有所不同吗?例如,我们是否会有类似于C++/CLI或C++/CX扩展中的帽子状“指针”
^
?应该有一种方法来区分普通原始指针和“托管”指针,对吧?