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;
}
相关推荐
郭涤生21 小时前
fmtlib/fmt仓库熟悉
c++
Stanford_11061 天前
【2026新年启程】学习之路,探索之路,技术之路,成长之路……都与你同行!!!
前端·c++·学习·微信小程序·排序算法·微信开放平台
郝学胜-神的一滴1 天前
Linux线程属性设置分离技术详解
linux·服务器·数据结构·c++·程序人生·算法
w-w0w-w1 天前
C++构造函数初始化列表全解析
c++
梵尔纳多1 天前
初识 OpenGL
c++·图形渲染
王老师青少年编程1 天前
2025年12月GESP(C++二级): 黄金格
c++·算法·gesp·csp·信奥赛·二级·黄金格
一起搞IT吧1 天前
相机Camera日志实例分析之十二:相机Camx【萌拍后置zoom拍照】单帧流程日志详解
android·c++·数码相机·智能手机
十五年专注C++开发1 天前
浅谈Qt中的QSql模块整体设计
开发语言·数据库·c++·qt
k***92161 天前
C++:继承
java·数据库·c++
咔咔咔的1 天前
756. 金字塔转换矩阵
c++