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,该构造函数有能力将一个int类型的值自动转换为stack,而不发生任何问题。

 

加上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

 

如果加上explicit会发生编译错误。

相关文章:

  • 2022-12-23
  • 2021-08-15
  • 2021-11-05
  • 2021-07-14
  • 2021-12-17
  • 2021-06-05
  • 2022-02-02
猜你喜欢
  • 2022-02-21
  • 2022-02-16
  • 2022-02-26
相关资源
相似解决方案