C++11新特性(13)- 使用大括号包围的值列表赋值

不止是初始化


本连载的第二篇文章说明了如何使用大括号包围的值列表来初始化变量。


C++11新特性(2)- 列表初始化


除了初始化之外,这种形式也可以用于赋值语句中。先回顾一下初始化变量时的情况:


vector<int> vi{1, 2, 3, 4, 5};


接下来是赋值的情况:


vector<int> vi;

vi = {6, 7, 8, 9, 10};


这种形式,对于有限多个数值的赋值是非常有用的。


补充


和初始化一样,使用大括号包围的值列表也有同样的优势。一个是防止窄化,有时可以简单的理解为防止精度降低,例如下面的代码是无法编译通过的:


double pai = 3.1415926;

int pi;


pi = {pai};        //编译错误。


另外,如果大括号里的初始化列表为空,编译器会创建一个值初始化的临时量并赋值给赋值对象。


作者观点


正是各种的不方便,才促进了C++的进步。


觉得本文有帮助?请分享给更多人。
阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】

猜你喜欢

转载自blog.csdn.net/craftsman1970/article/details/80069008
今日推荐