以下是引用rjsp在2017-3-10 10:35:37的发言:
#include <iostream>
struct foo
{
/*explicit*/ foo( int v ) : v_(v)
{
std::cout << "foo(" << v_ << ")\n";
}
private:
int v_;
};
int main( void )
{
foo a( 1 );
foo b = 2; // 如果foo::foo加了explicit限制则失败
foo c{ 3 };
foo d = { 4 }; // 如果foo::foo加了explicit限制则失败
}
输出:
foo(1)
foo(2)
foo(3)
foo(4)
如果 Type a = b;等同于 Type a( b );调用构造函数,
那么这里 foo b = 2;b调用的构造函数和a调用的构造函数有区别吗?