我读了一些源代码,其中声明了接口类中的许多虚函数,默认实现如下:
virtual bool FunctionName(TypeName* pointer)
{
(void)pointer;
return true;
}
请问在默认实现中将指针转换为void的目的是什么?
答案 0 :(得分:18)
多种用途取决于您投射的内容
T
给出,并且在某些情况下返回某些函数调用的结果,该结果可能与T
不同。在T
情况下,void
的显式强制转换可以防止编译时错误:int f() { return 0; } void g() { return (void)f(); }
(void)a, b
永远不会调用重载的逗号运算符函数)。请注意,如果将类对象强制转换为operator void()
,标准会保证永远不会调用void
(但某些GCC版本会忽略该规则)。
答案 1 :(得分:12)
在这种情况下,只是为了避免编译器对未使用参数的警告。