看了一些我以前的代码,发现由于笨拙,我定义了一个析构函数,如下:
~ResourceManager(void);
这不仅编译通过,而且按预期工作。当然,我进行了修改
~ResourceManager();
但是我重构得太快了吗?第一个版本是否符合正确的C++风格?
编辑
由于问题已关闭,并且不会有任何机会进行正确的消歧,因此我应该引用标准中回答这个问题的相关引用,在析构函数被放置在透视图中时
12.4 析构函数
- 使用可选的函数说明符(7.1.2)后跟˜,后跟析构函数的类名,后跟空参数列表的特殊声明符号用于在类定义中声明析构函数。在这种声明中,˜后面跟随析构函数的类名可以被括在可选的括号中;忽略这样的括号。typedef名称不得用作析构函数声明符号中∼之后的类名称。
所以标准规定必须使用空参数列表。也许是与C语言实践中的自由函数(其中f(void)
是声明空参数列表的方式)向后兼容,导致在实现中将析构函数与它们一起带走,但这显然不是有效的C++。
void
参数不会产生任何影响。这是C语言的一个特点,在C中,它确实会产生影响。在C++中,你不需要它。 - juanchopanzavoid
。你几乎永远不会看到它被这样写。 - Paul Roub