C++转换为void的目的是什么?

Jak*_*ake 6 c++ virtual

可能重复:
将未使用的返回值转换为void

我读了一些源代码,并在其中声明了接口类中的许多虚函数,并默认实现如下:

virtual bool FunctionName(TypeName* pointer)
{
   (void)pointer;
   return true;
}
Run Code Online (Sandbox Code Playgroud)

请问在默认实现中将指针转换为void的目的是什么?

Joh*_*itb 18

多种用途取决于您的演员

  • 将您对编译器的意图标记为完全是无操作的表达式是为了编写(例如,用于禁止警告)
  • 将您的意图标记为编译器和程序员忽略某些内容的结果(例如,函数调用的结果)
  • 在函数模板中,如果返回类型由模板参数类型给出T,并且您返回某些函数调用的结果,这可能与T某些情况不同.T在这种void情况下,显式强制转换可以防止编译时错误:
    int f() { return 0; } void g() { return (void)f(); }
  • 禁止编译器选择逗号运算符重载((void)a, b永远不会调用重载的逗号运算符函数).

请注意,operator void()如果您将类对象void强制转换为(某些GCC版本忽略该规则),则标准保证永远不会有被调用.


rus*_*lik 12

在这种情况下,它只是为了避免编译器对未使用参数的警告.