精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
服务方向
联系方式
锐英源精品原创,禁止转载和任何形式的非法内容使用,违者必究。点名“简易百科”和“闲暇巴”盗用锐英源原创内容。
先说评语,这不是个大改动点,C++17if和switch初始化语句其实是C++17if和switch行内带变量初始化语句,把原来放外面的定义和初始化语句可以放if和switch括号里。
if语句的改进还算有用,但是switch完全没必要,switch的()里的值,可以直接是个函数调用,再加上个初始化部分,纯属多余。
switch旧风格:
switch (getabc())
switch在C++17里可以写的风格:
switch(auto a(getabc());a)
这风格的语法形式是:
switch (init; condition)
旧风格反而代码量更少。
if的新风格如下:
if(auto a(getabc());a>10)
这风格的语法形式是:
if (init; condition)
if还算有用,是因为少了一行代码。另外判断变量a在块外不可用,有保护作用,也让函数栈少用一点点空间。
但是,现在到外是代码提示,代码自动完成功能,这些优化实在意义不大。
不过,国外C++爱好者可能会用这些功能,因为他们会追随这个风格。这些风格和for语句有点像。