gpt4 book ai didi

c++ - 允许转换为 void(不是指针),为什么?

转载 作者:IT老高 更新时间:2023-10-28 23:16:13 25 4
gpt4 key购买 nike

为什么我可以将此 vector 转换为 void(甚至不是指针)?

int main()
{
std::vector<int> a;
(void)a;
}

这怎么会被允许?

最佳答案

强制转换为 void 只是丢弃表达式的结果。有时,您会看到人们使用它来避免“未使用的变量”或“忽略的返回值”警告。

在 C++ 中,您可能应该写成 static_cast<void>(expr);而不是 (void)expr;

这具有丢弃值的相同效果,同时明确正在执行哪种转换。

标准说:

Any expression can be explicitly converted to type cv void, in which case it becomes a discarded-value expression (Clause 5). [ Note: however, if the value is in a temporary object (12.2), the destructor for that object is not executed until the usual time, and the value of the object is preserved for the purpose of executing the destructor. —end note ]

ISO/IEC 14882:2011 5.2.9 标准。 6

关于c++ - 允许转换为 void(不是指针),为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32828288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com