析构函数或解构函数?

时间:2010-07-23 08:01:59

标签: oop terminology

在我的日常生活中,在阅读书籍的过程中,我看到了析构函数和解构函数这两个词。

但这个方法的正确名称是什么?

5 个答案:

答案 0 :(得分:17)

析构函数用于在对象即将死亡时清理内容。如果指定何时移除/死亡对象,则会自动调用它。

更多信息:

http://en.wikipedia.org/wiki/Destructor_%28computer_science%29

答案 1 :(得分:9)

析构函数,如果您指的是OOP。谈话时的构造函数 World of Warcraft; - )。

答案 2 :(得分:5)

析构函数是最常用的术语(解构函数听起来像本地用法:我喜欢它,因为它指出了构造函数的对称性)。

但是这些事情在某种程度上是语言特定的,因为不同的OO语言者对实例的生命周期有不同的模型。以C#为例,instead of destructors finalizers具有弱执行保证,supplemented由语言支持的Dispose()模式提供确定性。

答案 3 :(得分:3)

“析构函数”确实是正确的术语。 我在旧书中看过“解构主义者”,似乎在正确的术语中有一段时间存在争议,但析构函数似乎已经胜出。

关于wiki或WoW关于解构的说法的轻率答案:尝试在标准词典中查找“析构函数”。显然,它是一种用于摧毁越野机载导弹或运载火箭的装置。

答案 4 :(得分:2)

正如其他人已经解释的那样,destructor用于清理对象。

C#7中有一项新功能,可以称为deconstructor

class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public void Deconstruct(out string firstName, out string lastName)
    {
        firstName = FirstName;
        lastName = LastName;
    }
}

var person = new Person { FirstName = "John", LastName = "Smith" };
var (localFirstName, localLastName) = person;

此功能的更常见名称为deconstruct methoddeconstruction但我在official msdn blog上发现至少有一个实例将其称为deconstructor(强调我的):

  

以这种方式构建器和解构器是“对称的”将是一种常见的模式。