本文介绍了带有多个参数的显式构造函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使具有多个参数的构造函数explicit
有任何(有用的)效果吗?
Does making a constructor having multiple arguments explicit
have any (useful) effect?
示例:
class A {
public:
explicit A( int b, int c ); // does explicit have any (useful) effect?
};
推荐答案
直到C ++ 11,是的,没有理由在多参数构造函数上使用explicit
.
Up until C++11, yeah, no reason to use explicit
on a multi-arg constructor.
由于初始化列表,在C ++ 11中发生了变化.基本上,使用初始化器列表进行复制初始化(但不能直接初始化)时,不需要将构造函数标记为explicit
.
That changes in C++11, because of initializer lists. Basically, copy-initialization (but not direct initialization) with an initializer list requires that the constructor not be marked explicit
.
示例:
struct Foo { Foo(int, int); };
struct Bar { explicit Bar(int, int); };
Foo f1(1, 1); // ok
Foo f2 {1, 1}; // ok
Foo f3 = {1, 1}; // ok
Bar b1(1, 1); // ok
Bar b2 {1, 1}; // ok
Bar b3 = {1, 1}; // NOT OKAY
这篇关于带有多个参数的显式构造函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!