一致性初始化和初值列的注意点

1、大括号初始化的时候,不允许发生窄化,例如

int a = 1.1;		//正确,a被窄化为1
int b = { 2.2 };	//错误,b无法被窄化为2

2、explicit修饰的函数无法使用初值列

class P
{
public:
	P(int, int)
	{
		std::cout << "P(int, int)" << std::endl;
	}

	explicit P(int, int, int)
	{
		std::cout << "explicit P(int, int, int)" << std::endl;
	}
};

P p1 = { 2,2 };		//正确
P p2 = { 3,3,3 };	//错误

猜你喜欢

转载自blog.csdn.net/qq_41741165/article/details/80646643