C++(20):explicit(true/false)

explicit通常用于声明是否运行隐式转换:

cpp 复制代码
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

cpp 复制代码
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;
}
相关推荐
王老师青少年编程5 分钟前
2026年6月GESP真题及题解(C++五级):排排坐
c++·题解·真题·gesp·五级·2026年6月·排排坐
郝学胜-神的一滴22 分钟前
Qt 高级编程 034:深耕QWidget底层内核—彻底吃透无边框窗口设计核心原理
开发语言·c++·qt·程序人生·软件开发·用户界面
不会写代码的ys33 分钟前
C++复习篇
java·开发语言·c++
aichitang20241 小时前
数论变换(NTT)
c++·算法·fft·ntt
_olone1 小时前
AtCoder Beginner Contest 465 D - X to Y
c++·算法
星夜夏空991 小时前
C++学习(3) —— C++输入输出流
c++·学习
CAU界编程小白1 小时前
CAU抢课脚本
c++·脚本
MOONICK2 小时前
windows原生条件变量支持
c++·windows
汉克老师2 小时前
GESP2026年6月认证C++二级( 第三部分编程题(1、完全平方数计数))精讲
c++·循环·枚举算法·gesp2级·平方数·逆向枚举·区间判断
wuminyu2 小时前
markword在高并发场景下变化剖析
java·linux·c语言·jvm·c++