C++ 强制转换为 void 的目的是什么? [复制]

2024-04-28

可能的重复:
将未使用的返回值强制转换为 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(使用前将#替换为@)

C++ 强制转换为 void 的目的是什么? [复制] 的相关文章

随机推荐