c++中关键词explicit
时间:2010-12-16 来源:Vagrant-Benz
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;显然如果没有explicit,该构造函数有能力将一个int类型的值自动转换为stack,而不发生任何问题。
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
如果加上explicit会发生编译错误。
相关阅读 更多 +