编程语言
首页 > 编程语言> > C++ 关键字explicit详解

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;
}

 

标签:调用,int,explicit,C++,关键字,详解,隐式,构造函数
来源: https://blog.csdn.net/fanjufei123456/article/details/120153173