C++ 能给我一个~destructor(void)吗?
查看我的一些旧代码,我发现出于笨拙,我定义了一个析构函数,如下所示:C++ 能给我一个~destructor(void)吗?,c++,standards,C++,Standards,查看我的一些旧代码,我发现出于笨拙,我定义了一个析构函数,如下所示: ~ResourceManager(void); 这不仅可以编译,而且可以按预期工作。我当然把它改成了 ~ResourceManager(); 但我重构的速度太快了吗?是第一个版本正确和良好的C++风格吗? 编辑 由于问题已经结束,没有任何机会进行适当的消歧,因此我应该引用标准中的相关引用,当析构函数被透视时,该标准回答了这个问题 12.4析构函数 一种特殊的声明器语法,使用可选函数说明符(7.1.2),后跟~,后跟析构函数
~ResourceManager(void);
这不仅可以编译,而且可以按预期工作。我当然把它改成了
~ResourceManager();
但我重构的速度太快了吗?是第一个版本正确和良好的C++风格吗?
编辑
由于问题已经结束,没有任何机会进行适当的消歧,因此我应该引用标准中的相关引用,当析构函数被透视时,该标准回答了这个问题
12.4析构函数
因此,标准要求一个空参数列表。可能在实现中,析构函数与自由函数的C实践向后兼容(其中
f(void)
是声明空参数列表的方式)需要使用析构函数,但是显然不是有效的C++这两行代码之间没有区别<代码>()与(无效)
相同。从样式的角度来看,()
是我一直看到的没有参数的函数。这两行是等价的。一些开发人员喜欢在无参数函数的签名中显式地告诉任何阅读它的人“它不接受任何参数”这是C语言的残余。在C语言中,空参数列表不是指不接受参数的函数,而是指具有未指定数量参数的函数。C++中的代码> FoO(空)被禁止,而~ResourceManager()
版本。参数void
没有区别。这是一种C-ism,它实际上起了作用。您不需要C++。样式化,请留下<代码>空白>代码>。你几乎看不到它是那样写的。我应该检查一下这是不是一个骗局(@juanchopanza链接为duplicate的问题没有将析构函数放在perpsective(或任何其他成员函数)中。需要什么“透视”呢?duplicate解释了void作为函数参数的含义。因此在C:void f();f(1,2,3)是可以的,但是void g(void);g(1,2,3),不是???DieterLücking正确。