C++11之统一初始化

地点:软件大楼211  

这是C++11的新特性。在新标准下C++11允许使用{......}语法来初始化类型,包括内置内型,struct类型,class类型,比如:

int a={5};
在这里甚至等号都可以不要,比如:

int a{5}
也是合法的。

另外,使用统一初始化还可以阻止窄化。一般情况下C++是隐式执行窄化,即所谓隐式转化,统一初始化可有效防止这种情况的出现,在编译时给出错误信息提示,从而保证代码安全性。比如:

int x={3.14};      //编译错误
又比如:

void func(int i)
{
    /*......*/
}
int main()
{
   func({3.14});   //编译错误
   return 0;
}
统一初始化用于初始化STL容器,比如:
vector<string> myVec={"string1","string2","string3"};
统一初始化用于用于初始化动态数组,比如:

int*pArray=new int[4]{0,1,2,3};
统一初始化用于构造函数初始化器中初始化类成员数组, 比如

class MyClass
{
  public:
      MyClass():mArray{0,1,2,3}  {}
  private:
     int mArray[4];
}








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值