相关疑难解决方法(0)

为什么将未使用的返回值转换为void?

int fn();

void whatever()
{
    (void) fn();
}
Run Code Online (Sandbox Code Playgroud)

是否有任何理由将未使用的返回值转换为无效,或者我是否认为这完全是浪费时间?

跟进:

那看起来相当全面.我认为这比评论未使用的返回值更好,因为自我记录代码比评论更好.就个人而言,我会关掉这些警告,因为这是不必要的噪音.

如果一个虫子逃脱,我会吃掉我的话......

c c++ void

105
推荐指数
7
解决办法
4万
查看次数

为什么使用强制语法不调用"operator void"?

用户GMan使用此答案时,我制作了以下代码段(使用Visual C++ 9编译):

 class Class {
 public:
     operator void() {}
 };

 Class object;
 static_cast<void>( object );
 (void)object;
 object.operator void();
Run Code Online (Sandbox Code Playgroud)

在使用调试器踩到后,我发现转换为void不调用Class::operator void(),只有第三个invokation(显式调用运算符)实际上调用了运算符,两个转换只是什么都不做.

为什么operator void不使用强制语法调用?

c++ casting operator-overloading operators

40
推荐指数
1
解决办法
2700
查看次数

(void)输入迭代器的r ++要求

24.2.3 Input iterators,C++标准指定输入迭代器的一个要求作为表达式(void)r++等效(void)++r.

你也可以在cppreference上看到这个.

那是什么表达?这个要求有什么意义?为什么需要?

它看起来像一个C风格的类型转换为void的结果r++还是++r,但我不认为这是它到底是什么.这就是说,稍微离题,看起来我可以void在类中定义转换运算符.gcc和clang都编译它,但clang发出警告:

警告:永远不会使用将'C'转换为'void'的转换函数

c++ iterator

4
推荐指数
1
解决办法
152
查看次数

标签 统计

c++ ×3

c ×1

casting ×1

iterator ×1

operator-overloading ×1

operators ×1

void ×1