C++11新特性(二)

本文介绍了C++11的新特性,包括默认构造函数的使用,默认构造函数可通过`= default`声明;类对象成员的类内初始化,使用初始值列表或直接初始化;委托构造函数,用于调用同一类的其他构造函数;constexpr构造函数,要求初始化所有数据成员;以及容器操作,如`cbegin`和`cend`返回const迭代器,`emplace`成员函数直接在容器中构造元素,`shrink_to_fit`请求释放多余内存,还有智能指针、无序容器和lambda表达式的使用等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 使用=default生成默认构造函数
    类名() = default;
    该构造函数不接受任何实参,所以它是一个默认构造函数。定义这个构造函数的目的仅仅是因为我们既需要其他形式的构造函数,也需要默认的构造函数。这个函数的作用完全等同于之前使用的合成默认构造函数。如果我们需要默认的行为,那么可以通过在参数列表后面写上=default来要求编译器生成构造函数。=default既可以和声明一起出现在类的内部,也可以作为定义出现在类的外部。如果=default在类的内部,则默认构造函数是内联的;如果在类的外部,则该成员默认情况下不是内联的。

  2. 类对象成员的类内初始化
    最好的方式就是把这个默认值声明成一个类内初始值。类内初始值必须使用=的初始化形式或者花括号括起来的直接初始化形式。

  3. 委托构造函数
    一个委托构造函数使用它所属类的其他构造函数执行它自己的初始化过程,或者说它把它自己的一些(或者全部)职责委托给了其他的构造函数。一个委托构造函数也有一个成员初始值的列表和一个函数体。在委托构造函数内,成员初始值列表只有一个唯一的入口,就是类名本身。类名后面紧跟圆括号括起来的参数列表,参数列表必须与类中另外一个构造函数匹配。
    当一个构造函数委托给另一个构造函数时,受委托的构造函数的初始值列表和函数体被一次执行。

  4. constexpr构造函数
    constexpr构造函数必须初始化所有数据成员,初始值或者使用constexpr构造函数,或者是一条常量表达式。

  5. 用string对象处理文件名
    文件名既可以是库类型string对象,也可以是C风格字符数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比滕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值