C++ 关键字explicit详解

最近看C++项目代码的时候发现:explicit关键字

public:
    explicit CMaintainManager(CPluginContext* context);
 

那么explicit关键字到底是什么意思呢?

只能用来修饰类构造函数。

explicit修饰的构造函数不能被隐式调用。

禁止类对象之间的隐式转换。

主要作用是用来声明类构造函数是显示调用的,而非隐式调用,所以只能用于修饰单参构造函数。

因为无参构造函数和多参构造函数本身就是显示调用的。

如果在本身就是显示调用的函数前加上explicit关键字,是没啥意义的。

因为explicit关键字主要用于防止隐式转换的。

下面给出具体实例讲解:

#include <iostream>
using namespace std;

class fan{
public:
    //普通的构造函数
    fan(int n){
        m=n;
    }
private:
    int m;
};

class ju{
public:
    //explicit显式构造函数
    explicit ju(int n){
        m=n;
    }
private:
    int m;
};

int main(){
    fan f1=519;//隐式调用其构造函数,成功
    //ju f2=719;//编译错误,不能隐式调用其构造函数
    ju f3(7519);//显式调用成功

    return 0;
}

C++ 关键字explicit详解

 

上一篇:ABAQUS/Explicit质量缩放(Massscaling)的使用心得


下一篇:404错误This application has no explicit mapping for /error, so you are seeing this as a fallback.