类的新功能与STL容器变化

415 字
2 分钟
类的新功能与STL容器变化

1. 类的新功能#

1.1 默认移动构造与移动赋值#

C++11 在原有的 6 个默认成员函数基础上,新增了移动构造和移动赋值。

  • 自动生成条件(触发规则):

    • 如果你没有实现析构函数、拷贝构造、拷贝赋值中的任何一个,编译器才会生成默认的移动构造/赋值。
  • 行为:

    • 内置类型:逐字节拷贝。

    • 自定义类型:若该成员实现了移动语义则调用移动,否则调用其拷贝构造。

  • 注意: 如果提供了移动构造/赋值,编译器将不再自动提供拷贝构造/赋值。

1.2 default 与 delete#

  • default(显式缺省): 强制编译器生成默认版本(例如你写了拷贝构造导致移动构造不生成,可用它找回)。

  • delete(删除函数): 明确禁止生成该函数。在 C++98 中需要设为 private 且不实现,C++11 只需加 = delete。

用法模板:

class MyClass {
public:
MyClass() = default; // 强制默认构造
MyClass(const MyClass&) = delete; // 禁止拷贝
};

1.3 其他增强#

  • 成员缺省值: 允许在声明变量时给初值,本质是给初始化列表使用的。

  • final 与 override: final 限制类不可继承或虚函数不可重写;override 强制检查虚函数是否成功重写。


2. STL 容器的变化#

  • 新容器: unordered_map / unordered_set(哈希实现,性能优于 map)、array(静态数组)、forward_list。

  • 新接口: * emplace 系列:直接在容器内部构造对象,减少拷贝。

    • 右值引用版本:所有容器的 push / insert 均支持移动语义。

    • 范围 for 循环:直接遍历容器元素。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Profile Image of the Author
HandlerOne
おかえり
公告
本站已整理 138 篇技术笔记,并按 8 条主线排成学习路线(141 站);站内搜索与桌宠对话均已上线。
分类
标签
最新动态
站点统计
文章
138
分类
12
标签
42
总字数
597,044
站点信息
构建平台
腾讯云 · Nginx
博客版本
v6.16.8
文章目录