c++中关键词explicit重要作用有2个:
1、禁止"单参数构造函数"被用于自动性别转换
2、能阻止“以赋值语法进行带有转型操作的初始化”
例如:对于stack 可以将初始化长度作为参数传给构造函数
1 class stack
2 {
3 public:
4 stack( int size ): m_size(size){}
5 //....
6 private:
7 int m_size;
8 };
如果没有explict,我们可以:
1 stack s;
2 //...
3 s = 40;
4
加上explicit能很好的阻止此情况发生。
1 class stack
2 {
3 public:
4 explicit stack( int size ): m_size(size){}
5 //....
6 private:
7 int m_size;
8 };
9
10 //.....
11 stack sx(100); //Ok
12 stack sy = 100; //Error