c++中关键词explicit

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会发生编译错误。

posted on 2010-12-16 07:07  怕虫的瞌睡虫  阅读(327)  评论(0编辑  收藏  举报

导航