当前位置:  开发笔记 > 编程语言 > 正文

哪个更受欢迎:C++中的foo(void)或foo()

如何解决《哪个更受欢迎:C++中的foo(void)或foo()》经验,为你挑选了2个好方法。

我在C++中看到了两种定义转换运算符重载的样式,

    operator int* (void) const

    operator int*() const

问题1.我认为两种风格(无论是否添加void)都具有相同的功能,对吗?
问题2.任何偏好哪个更好?



1> CB Bailey..:

这不仅适用于转换运算符,而且适用于不带参数的C++中的所有函数.就个人而言,我更喜欢省略void一致性.

实践起源于C.最初,当C没有原型时,在函数声明中使用了一对空括号,并且没有提供有关函数所期望的参数的任何信息.

添加原型时,保留空括号以进行功能声明,以表示"未指定的参数",以实现灵活性和向后兼容性.为了提供一个显式原型,意思是"不带参数",(void)添加了语法.

在C++中所有函数声明必须有原型,所以()(void)具有相同的含义.



2> Merlyn Morga..:

引用ISO C++常见问题解答,我应该使用f(void)f()

C语言程序员经常f(void)在声明不带参数的函数时使用,但在C++中被认为是不好的样式.事实上,这种f(void)风格被C++的创造者Bjarne Stroustrup,C的共同创造者Dennis Ritchie和Unix诞生的研究部门负责人Doug McIlroy称为"憎恶".

如果你正在编写C++代码,你应该使用f().该f(void)样式在C++中是合法的,但只是为了更容易编译C代码.

呼吁权威FTW :)

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有