C++ 11新特性之大括号初始化详解

 更新时间:2017年08月17日 08:27:22   作者:Dablelv  
这篇文章主要介绍了C++ 11新特性之大括号初始化的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。

本文主要给大家介绍了关于C++11新特性之大括号初始化的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:

C++11之前,C++主要有以下几种初始化方式:

//小括号初始化
string str("hello");

//等号初始化
string str="hello";

//大括号初始化
struct Studnet{
 char* name;
 int age;
};
Studnet s={"dablelv",18}; //纯数据(Plain of Data,POD)类型对象
Studnet sArr[]={{"dablelv",18},{"tommy",19}}; //POD数组

虽然c++03提供了多样的对象初始化方式, 但不能提供自定义类型对象的大括号初始化方式,也不能在使用new[]的时候初始化POD 数组。

幸好,C++11扩充了大括号初始化功能,弥补了C++03的不足。

class Test{ 
 int a; 
 int b; 
public: 
 C(int i, int j); 
}; 
Test t{0,0};     //C++11 only,相当于 Test t(0,0); 
Test* pT=new Test{1,2};   //C++11 only,相当于 Test* pT=new Test{1,2}; 
int* a = new int[3]{ 1, 2, 0 }; //C++11 only

此外,C++11大括号初始化还可以应用于容器,终于可以摆脱 push_back() 调用了,C++11中可以直观地初始化容器了:

// C++11 container initializer 
vector<string> vs={ "first", "second", "third"}; 
map<string,string> singers ={ {"Lady Gaga", "+1 (212) 555-7890"},{"Beyonce Knowles", "+1 (212) 555-0987"}}; 

因此,可以将C++11提供的大括号初始化作为统一的初始化方式,既降低了记忆难度,也提高的代码的统一度。

此外,C++11中,类的数据成员在申明时可以直接赋予一个默认值:

class C 
{
private: 
 int a=7; //C++11 only
}; 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

参考文献

[1]C++ 11 新特性

相关文章

  • memset函数的使用分析

    memset函数的使用分析

    本篇文章是对memset函数的使用进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++ 智能指针的模拟实现实例

    C++ 智能指针的模拟实现实例

    这篇文章主要介绍了C++ 智能指针的模拟实现实例的相关资料,智能指针是一个类,它把普通指针封装起来,能实现和普通指针同样的功能。,需要的朋友可以参考下
    2017-07-07
  • C++使用string的大数乘法运算(3)

    C++使用string的大数乘法运算(3)

    这篇文章主要为大家详细介绍了C++使用string的大数乘法运算,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • C语言 数据存储方式知识点详解

    C语言 数据存储方式知识点详解

    在本篇文章里小编给大家整理的是关于C语言 数据存储方式知识点详解,有需要的朋友们可以学习参考下。
    2020-02-02
  • C语言中结构体(struct)的几种初始化方法

    C语言中结构体(struct)的几种初始化方法

    相信大家都知道struct结构体是C语言中非常重要的复合类型,初始化的方法很多,那么小编下面对这些方法进行总结,便于自己和大家以后查阅,有需要的可以参考借鉴。
    2016-08-08
  • C++快速排序的分析与优化详解

    C++快速排序的分析与优化详解

    这篇文章主要介绍了C++快速排序的分析与优化,非常经典的算法,分析也较为详尽,需要的朋友可以参考下
    2014-08-08
  • 不要被C++(自动生成规则)所蒙骗

    不要被C++(自动生成规则)所蒙骗

    正如标题所说,我们不要被C++语法中所描述的那些条条框框所“蒙骗”了。的确,相信这些生成规则不会对我们的编程带来多大的影响(不会产生错误),但是只有了解它们的背后操作,我们才知道编译器究竟为我们做了什么,感兴趣的朋友可以了解下,希望本文对你有所帮助
    2013-01-01
  • 详解C++中赋值和输入输出语句的用法

    详解C++中赋值和输入输出语句的用法

    这篇文章主要介绍了详解C++中赋值和输入输出语句的用法,是C++入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • C++中rapidjson将嵌套map转为嵌套json的讲解

    C++中rapidjson将嵌套map转为嵌套json的讲解

    今天小编就为大家分享一篇关于C++中rapidjson将嵌套map转为嵌套json的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • C实现的非阻塞方式命令行端口扫描器源码

    C实现的非阻塞方式命令行端口扫描器源码

    这篇文章主要介绍了C实现的非阻塞方式命令行端口扫描器源码,对于大家理解C端口扫描器有很大帮主,需要的朋友可以参考下
    2014-07-07

最新评论