1)存在于堆栈上。 2)在超出作用域时调用其析构函数。
这两个特点使得像以下这些东西成为可能:
A)RAII B)引用计数GC
有趣的是,(1) 和 (2) 在“较低级”语言(如C/Assembly)中不可用;在“较高级”语言(如Ruby/Python/Java)中也不可用(因为 GC 防止对象可预测地销毁)。
我很好奇——你是否知道其他非常特定于 C++ 的技术,由于语言设计选择而导致?
谢谢!
编辑:如果你的答案是“这在C++和其他语言中都适用”,那也可以。我想学习的东西类似于:
通过选择不具有某些功能(例如GC),我们获得了其他功能(例如 RAII+可预测的对象销毁)。在哪些领域中,C++ 通过选择不具有其他“高级”语言具有的功能,实现了这些高级语言无法表达的模式?