关键字 explicit 在C++中的使用

在C++中,explicit关键字用于防止类构造函数或类型转换运算符中的隐式类型转换。为了说明explicit关键字的使用,让我们看一个简单的例子:

假设你有一个名为Box的类,它接受一个整数参数来设置其容量:

class Box {
public:
    Box(int capacity) : m_capacity(capacity) {}

private:
    int m_capacity;
};

现在,如果不使用explicit关键字,你可以这样创建一个Box对象:

Box my_box = 5; // 隐式地将整数5转换为Box对象

但是,这可能会导致不易察觉的错误。为了避免此类隐式转换,可以在构造函数前添加explicit关键字:

class Box {
public:
    explicit Box(int capacity) : m_capacity(capacity) {}

private:
    int m_capacity;
};

现在,使用隐式转换将产生编译错误,只能显式地创建Box对象:

Box my_box = 5;      // 编译错误:不能隐式地从'int'转换为'Box'
Box my_box(5);       // 正确:显式地创建Box对象
Box my_box = Box(5); // 正确:显式地创建Box对象

总之,explicit关键字用于禁止类构造函数或类型转换运算符中的隐式转换,从而避免可能的错误。

posted @   严_青  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示