【发布时间】:2021-07-29 23:25:49
【问题描述】:
在阅读 Drop 特征时,我发现 Rust 的 drop 方法和 C++ 中的析构函数有很多相似之处。两者有什么区别?
【问题讨论】:
-
Rust 不是基于类的语言,而是基于特征的语言。 Drop 是一个可以实现也可以不实现的特征。在 C++ 中,每个类都有一个析构函数,无论你是否需要。
-
@nbro
mem::forget函数是安全的 Rust,但你不能无意中调用它 -
我不会说没有区别,但区别可能微不足道。 The documentation for Drop 甚至称它为析构函数。您有更具体的问题吗?
-
嗯,我上面提到的差异仍然很大,但这是由于语言的设计不同。
-
我能想到的唯一真正的区别是 C++ 有关于涉及继承的析构函数的规则。由于 Rust 没有继承,这些规则并不真正适用于 Rust。