c++ - 为什么我们不能使函数显式化?

标签 c++ keyword

<分区>

为什么我们不能在函数上使用 explicit 关键字?我想不出 1 个不允许这样做的充分理由(还有几个相反的理由)。

这是为什么?

最佳答案

您想要实现的目标(禁止函数参数的类型转换)可以通过声明函数的删除模板版本轻松实现:

template <class T> void f(T) = delete;

void f(int){}

int main()
{
    double k = 4;
    f(k); //error: use of deleted function ‘void f(T) [with T = double]’
}

关于c++ - 为什么我们不能使函数显式化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18383242/

相关文章:

c++ - std::multimap 上的 emplace_hint 是否保留等效元素的相对顺序?

c++ - 重新定义 C++ 关键字是否合法?

c# - 在类 C# 中使用 ref

python - 普通参数与关键字参数

.net - 为什么.Net中存在 'sealed'关键字?

c++ - 与 get、tie 和其他元组操作一起使用的元组包装器

c++ - 容器之间的区别

c++ - std::string 相关错误和处理它们,c++

c++ - 有哪些推荐的编译器标志集可以帮助减少错误

python - Python目录名可以是关键字吗?例如。 'import' ?