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;
}
相关推荐
攻城狮7号4 小时前
【第四节】C++设计模式(创建型模式)-Builder(建造者)模式
c++·设计模式·建造者模式
fpcc4 小时前
设计心得——解耦的实现技术
c++·软件工程
东方芷兰4 小时前
算法笔记 04 —— 算法初步(下)
c++·笔记·算法
xinghuitunan4 小时前
时间转换(acwing)c/c++/java/python
java·c语言·c++·python
TechNomad5 小时前
C++访问MySQL数据库
数据库·c++·mysql
Emplace5 小时前
ABC381E题解
c++·算法
ctrigger6 小时前
AI回答:Linux C/C++编程学习路线
linux·c语言·c++
h^hh7 小时前
洛谷 P3405 [USACO16DEC] Cities and States S(详解)c++
开发语言·数据结构·c++·算法·哈希算法
Dreams°1238 小时前
【透过 C++ 实现数据结构:链表、数组、树和图蕴含的逻辑深度解析】
开发语言·数据结构·c++·mysql
wanjiazhongqi8 小时前
链表和STL —— list 【复习笔记】
数据结构·c++·笔记·链表