C++11有哪些新特性?

C++ 函数指针 智能指针 正则表达式 Lambda 构造函数 闭包 哈希表 Boost

C++是一门伟大的语言,永远给程序员最大的设计自由, 未使用的特性从不产生副作用,新版本永远完全兼容旧版本。 C++11先前被称作C++0x,即ISO/IEC 14882:2011,是C++编程语言的一个标准。

之前的C++标准包括C++98、C++03。 虽然此后的[C++14]才是C++的现行标准,但C++14旨在对C++11的小扩展(漏洞修复、功能改进),而C++11仍然是一个具有热度的关键词。

C++11的特性主要包括下面几个方面:

  • 提高运行效率的语言特性:右值引用、泛化常量表达式
  • 原有语法的使用性增强:初始化列表、统一的初始化语法、类型推导、范围for循环、Lambda表达式、final和override、构造函数委托
  • 语言能力的提升:空指针nullptr、default和delete、长整数、静态assert
  • C++标准库的更新:智能指针、正则表达式、哈希表等

本文就从这几个方面来介绍C++11中那些令人心动的新特性。

C++模板的偏特化与全特化

C++ 模板 特化 编译

模板机制为C++提供了泛型编程的方式,在减少代码冗余的同时仍然可以提供类型安全。特化必须在同一命名空间下进行,可以特化类模板也可以特化函数模板,但类模板可以偏特化和全特化,而函数模板只能全特化。模板实例化时会优先匹配"模板参数"最相符的那个特化版本。

用Grub Rescue手动引导来启动内核

Bash GNU Grub Linux Ubuntu Windows 操作系统

Wikipedia: GNU Grub是一个来自GNU项目的启动引导程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。 GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。

几乎所有人的Linux都是一个双系统,所以Grub也是几乎所有Linux用户熟知的东西。 但很多原因都可以导致Linux无法启动,比如安装了不合适的驱动程序、由于安装Windows重写了MBR、安装内核时参数搞错了等。

这时我们通常会用一个启动盘来重置MBR,并重新配置硬盘上的Grub。但很多情况下我们并不需要这样一个启动盘,Grub无法启动内核时会提供Grub Rescue终端。 在这里可以手动引导来启动内核,然后重新安装和配置Grub。本文便来记录这一过程。

Grub的手册在这里: https://www.gnu.org/software/grub/manual/

原生 JavaScript 的 DOM 操作汇总

JavaScript DOM HTML jQuery innerHTML

经常有人讲在 IDE 中写 C#、Java 会越来越手残,那么经常用 jQuery 也会让我们忘记 JavaScript 是如何操作 DOM 的。 JavaScript的DOM操作也是面试中的常见问题,尤其是当你需要回答jQuery的性能问题时,便需要再次回到JavaScript DOM API。 本文便总结一下常见的 JavaScript DOM 操作方法,关于 JavaScript DOM 事件可以参考另一篇文章:DOM Level 2 Event 与 jQuery 源码:捕获与冒泡

上一页 下一页