gpt4 book ai didi

c++ - 我应该在赋值和返回语句中使用 static_cast 吗?为什么?

转载 作者:太空狗 更新时间:2023-10-29 20:21:04 25 4
gpt4 key购买 nike

这是两个非常相似的片段:

vector<int> a;
int n = static_cast<int>(a.size());
// ---------
int f(const vector<int>& a) {
return static_cast<int>(a.size());
}

这里我显式地将类型size_t 的值转换为类型int。如果我省略 static_cast,则隐式应用相同的转换。

这种隐式转换属于哪种类型?在显式赋值和返回语句中省略 static_cast 是否安全?

最佳答案

这将是一个积分转换。并且缩小范围。

对于变量初始化,如果你想要一个特定的类型,一个好的方法是按照 Herb Sutter 在他的“Almost Always Auto”中的建议 GotW article :

auto n = int{a.size()};

尽可能使用列表初始化。它将阻止缩小转换,并且编译器会在需要时将您标记为使用显式强制转换(例如上述情况)。

关于c++ - 我应该在赋值和返回语句中使用 static_cast 吗?为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46264019/

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