【C++ Miscellany】C++重要的几项改变、标准程序库

C++重要的几项改变:

  • 增加了一些新的语言特性:RTTI、namespaces、bool、关键字mutable和explicit、enums作为重载函数之自变量引发的类型晋升转换,以及“在class定义区内直接为整型 const static class members设定初值”的能力;
  • 扩充了Templates的弹性:允许member templates存在、接纳"明白只是template当场实例化"的标准语法、允许function templates接受"非类型自变量(non-type arguments)"、可用class templates作为其他template的自变量;
  • 强化了异常处理机制:编译期间更严密地检验exception specifications、允许unexcpted函数抛出bad_exception对象;
  • 修改了内存分配例程:加入operator new[]operator delete[];内存未能分配成功时由operator new/new[]抛出一个异常,提供一个operator new/new[]新版本,在内存分配失败后返回0;
  • 增加了新的转型形式:static_cast,dynamic_cast,const_cast和reinterpret_cast;
  • 语言规则更为优雅精炼:重新定义虚函数时,其返回类型不再一定得与原定义完全吻合;此外临时对象的寿命也有了规范。

标准程序库

标准程序库的能力

  1. 支持C标准函数库;
  2. 支持strings;
  3. 支持国别(地域别、本土化、localization);
  4. 支持I/O;
  5. 支持数值应用;
  6. 支持广泛用途的容器和算法;

标准程序库的特点

  1. 标准程序库中每一样东西几乎都是template;
  2. 所有成分都位于namespace std内。

Standart Template Library(STL)

C++标准程序库的最大组成分子为STL:
主要包括容器(container)、迭代器(iterator)、泛型算法(algorithm):

  • 容器持有一系列对象;
  • 迭代器是一种类似指针的对象,用于遍历容器元素;
  • 泛型算法是可作用于STL容器身上的函数。

STL是可扩充的,可以将自己的容器、迭代器、算法加入STL家族内。

你可能感兴趣的:(C++进阶,c++,开发语言,算法,笔记)