explicit关键词

explicit关键词

一、前言

在读别人的代码时,我们常常会在构造函数面前看到explicit这个字样,那么explicit这个词是什么意思呢

 

二、explicit解释

explicit:明确的,显示的(来自网易翻译)

 

这个关键词的作用主要就是修饰类的构造函数,用来表明这一构造函数是显式调用的

 

下面我用案例进行描述

 

三、代码

 

#include <iostream>

class test
{
    public:
        test(){
        std::cout<<"调用无参构造函数\n"; 
        };
    
        explicit test(int m)
        {
            std::cout<<"调用有参构造函数"<<"\t打印参数:"<<m<<std::endl;
        }
        
};

int main()
{
    
    test exp;
    exp = 998;
    
    
/*
exp = 998的作用相当于 
test qwe(998);
 exp = qwe;
隐式调用
*/ /* 调用无参构造函数 调用有参构造函数 打印参数:998 */ return 0; }

 代码中,exp = 998的作用相当于  test qwe(998);exp = qwe 操作 ,属于隐式调用操作,而如果我们不想触发隐式调用,那就使用explicit关键字

四、使用 explicit

 

 

可以看到,如果我们在构造函数上加上explicit后,这样的赋值(隐式调用)就会报错

 

posted @ 2022-01-15 23:04  TLSN  阅读(151)  评论(0编辑  收藏  举报