可能的重复:
将未使用的返回值强制转换为 void https://stackoverflow.com/questions/689677/casting-unused-return-values-to-void
我读了一些源代码,其中接口类中的许多虚函数都是这样声明和默认实现的:
virtual bool FunctionName(TypeName* pointer)
{
(void)pointer;
return true;
}
请问在默认实现中将指针强制转换为 void 的目的是什么?
多种用途取决于您施放的内容
- 向编译器标记您的意图,即完全无操作的表达式应按书面形式编写(例如,用于禁止警告)
- 向编译器和程序员标记您的意图,即忽略某些结果(例如函数调用的结果)
- 在函数模板中,如果返回类型由模板参数类型给出
T
,并且您返回的某些函数调用的结果可能与T
在某些情况下。显式转换为T
可以,在void
情况下,防止编译时错误:
int f() { return 0; } void g() { return (void)f(); }
- 禁止编译器选择逗号运算符重载 (
(void)a, b
永远不会调用重载的逗号运算符函数)。
请注意,该标准保证永远不会出现operator void()
如果将类对象强制转换为void
(不过,某些 GCC 版本忽略了该规则)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)