我的问题return;和return NULL;C++一样?
我理解在C++中,与指针的上下文return NULL;相同return 0;.显然对于整数,情况并非如此,因为NULL不能被添加,减去等等.并且有些人鼓励使用0而不是指针使用NULL,因为它更便于移植.我很好奇这是否是发生等价的另一个例子.
我怀疑它们是等价的,因为它们return;说返回'没有'而NULL是'没有'.但是,如果有人可以确认或否认这一点(当然有解释),我将非常感激!
Lig*_*ica 11
是
return;相同return NULL;的C++?
没有.
return用于从没有返回值的函数"中断",即返回类型void.
return NULL返回值NULL,并且找到的函数的返回类型必须兼容NULL.
我理解在C++中,与指针的上下文
return NULL;相同return 0;.
有点.NULL可能不等同于0,但它至少会转换为某种东西.
显然,对于整数,情况并非如此,因为无法添加,减去NULL等.
您可以对指针执行加法和减法.但是,NULL无论如何必须具有整数类型(C++ 03中的4.10/1和18.1/4),所以它没有实际意义.NULL很可能是一个扩展到0或的宏0UL.
但是,一些现代编译器至少会警告你,如果它实际上是NULL你写的.
并且有些人鼓励使用0代替NULL来指示,因为它更便于移植.我很好奇这是否是发生等价的另一个例子.
不,我不同意这个建议.虽然我能看到它是从,因为未来NULL的确切定义在不同的实现而不同,使用NULL将使很多容易与替换nullptr,当你切换到C++ 11,如果不出意外是自文档.
return没有表达式只有在声明函数void,构造函数或析构函数时才有效.如果您尝试从返回a int,a double等的函数中返回任何内容,则程序将无法编译:
错误:没有值的return语句,在返回'int'的函数中
根据C++ 11的§6.6.3/ 2:
不带表达式和braced-init-list的return语句只能用于不返回值的函数,即返回类型为void的函数,构造函数(12.1)或析构函数(12.4) .
(感谢sftrabbit的优秀评论).
| 归档时间: |
|
| 查看次数: |
17852 次 |
| 最近记录: |