C++中explicit关键字
Posted will-z
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中explicit关键字相关的知识,希望对你有一定的参考价值。
作用:显式声明单参构造函数,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关键字的主要内容,如果未能解决你的问题,请参考以下文章