explicit通常用于声明是否运行隐式转换:文章来源:https://www.toymoban.com/news/detail-737789.html
struct A
{
explicit A(int) { }
};
int main()
{
A a1 = 10; //编译报错,不运行隐式的通过int构造A
A a2(10); //可以显示的构造
return 0;
}
C++20扩展了explicit,可以通过explicit(false)来禁用,或通过explicit(true)来启用explicit文章来源地址https://www.toymoban.com/news/detail-737789.html
constexpr bool if_exp = false;
struct A
{
explicit(if_exp) A(int) { } //禁用explicit
};
struct B
{
explicit(!if_exp) B(int) { } //启用explicit
};
int main()
{
A a = 10; //explicit被禁用,所以可以隐式构造
B b(10); //explicit被启用,所以只能显示构造
return 0;
}
到了这里,关于C++(20):explicit(true/false)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!