码迷,mamicode.com
首页 > 编程语言 > 详细

C++中explicit关键字

时间:2021-06-04 19:01:20      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:error   参数   erro   ++   注意   关键字   return   一个   length   

作用:显式声明单参构造函数,C++构造函数默认是隐式(implicit)的,

           用explicit声明单参构造函数的好处是避免歧义,让构造函数不能隐式调用。

 

当构造函数没有用explicit声明时,Array a(5); Array b = 6;都能够调用构造函数,前者是显式调用,后者是隐式调用。

当单参构造函数声明为explicit,构造函数无法隐式调用,如以下代码Array b = 6; 这句是错误的:

class Array {
public:
    explicit Array(int len) {
        length = len;
    }
private:
    int length;
};

int main()
{
    Array a(5);
    Array b = 6;    //ERROR
    return 0;
}

 

注意:explicit一般而言修饰的是“单参”构造函数,对于多参数构造函数而言,无法用赋值号隐式调用,所以explicit一般用于声明单参狗咱函数,

有个特例就是假如多参数构造函数中除了一个参数没有默认参数,其他参数都有默认参数,那么explicit也符合它的设计初衷。

C++中explicit关键字

标签:error   参数   erro   ++   注意   关键字   return   一个   length   

原文地址:https://www.cnblogs.com/yaoguang-willZ/p/14847557.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!