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;
}
相关推荐
deng-c-f24 分钟前
C/C++内置库函数(6):C++中类什么时候使用静态变量
开发语言·c++
2301_7890156228 分钟前
C++:模板进阶
c语言·开发语言·汇编·c++
是小胡嘛37 分钟前
仿Muduo高并发服务器之Buffer模块
开发语言·c++·算法
im_AMBER42 分钟前
Leetcode 75 数对和 | 存在重复元素 II
c++·笔记·学习·算法·leetcode
ZXF_H43 分钟前
C/C++ OpenSSL自适应格式解析证书二进制字节流
c语言·开发语言·c++·openssl
神仙别闹1 小时前
基于QT(C++)实现B树可视化
c++·b树·qt
咕咕嘎嘎10241 小时前
C++模板特化
c++
BestOrNothing_20151 小时前
C++ 函数类型大全:成员函数 / 非成员函数 / 全局函数 / 静态函数 / 特殊成员函数 / 虚函数 / 模板函数 全面总结
c++·面向对象·八股·函数·程序语言
阿拉伯柠檬1 小时前
C++中的继承
开发语言·数据结构·c++·面试
有点。1 小时前
C++ ⼀级 2025 年09 ⽉
开发语言·c++