C ++什么是强制失效的目的?

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

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

virtual bool FunctionName(TypeName* pointer) { (void)pointer; return true; } 

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

根据你投的多个目的

  • 将您的意图标记为编译器,表示完全没有任何操作的expression意图是书写的(例如,用于禁止警告)
  • 标记你的意图是编译器和程序员忽略某些东西的结果(例如函数调用的结果)
  • 在函数模板中,如果返回types是由模板参数typesT ,并且在某些情况下返回可能与T不同的某个函数调用的结果。 对于T的明确转换可以在void情况下防止编译时错误:
    int f() { return 0; } void g() { return (void)f(); }
  • 禁止编译器select逗号运算符重载( (void)a, b将永远不会调用重载的逗号运算符函数)。

请注意,标准保证,如果您将类对象强制为void (某些GCC版本忽略该规则,则不会有operator void() )。

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