C++ 关键字explicit详解

2021/9/7 12:06:20

本文主要是介绍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详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程