为什么我可以将此向量转换为 void(甚至不是指针)?
int main()
{
std::vector<int> a;
(void)a;
}
这怎么会被允许呢?
转换为 void 只会丢弃表达式的结果。有时,您会看到人们使用它来避免“未使用的变量”或“忽略的返回值”警告。
在 C++ 中,你可能应该写static_cast<void>(expr);
而不是(void)expr;
这与丢弃该值具有相同的效果,同时明确正在执行哪种转换。
标准说:
任何表达式都可以显式转换为 cv void 类型,其中
如果它成为一个丢弃值表达式(第 5 条)。 [ 笔记:
但是,如果该值位于临时对象中(12.2),则析构函数
因为该对象直到通常时间才执行,并且值
保留对象是为了执行析构函数。
——尾注]
ISO/IEC 14882:2011 5.2.9 部分6
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)