zoukankan      html  css  js  c++  java
  • More Effective C++ 条款35 让自己习惯于标准C++ 语言

    (由于本书出版于1996年,因此当时的新特性现在来说可能已经习以为常,但现在重新了解反而会起到了解C++变迁的作用)

    1. 1990年后C++的重要改变

        1). 增加了新的语言特性:RTTI,namespaces,bool,关键词mutable和explicit,enums作为重载函数之自变量所引发的类型晋升转换,以及"在class 定义区内直接为整数型(intergral) const static class members设定初值"的能力.

        2). 扩充了Templates的特性:允许member templates存在,接纳"明白只是template当场实例化"的标准语法,允许function templates接受"非类型自变量(non-type atguments)",可用class templates作为其他template的自变量.

        3). 强化了异常处理机制(Exception handling):编译期间更严密地检验exception specifications,允许unexcpted函数抛出bad_exception对象.

        4).修改了内存分配例程:假如operator new[]和operator delete[],内存未能分配成功时由operator new/new[]抛出一个异常,提供一个operator new/new[]新版本,在内存分配失败后返回0.

        5). 增加了新的转型形式:static_cast,dynamic_cast,const_cast和reinterpret_cast

    2. 标准程序库的能力

        1). 支持C标准函数库.

        2). 支持strings.

        3). 支持国别(本土化,localization).不同文化使用不同字符集以及不同的日期,时间,排序事物,货币值等显式习俗.

        4). 支持I/O.

        5). 支持数值应用.支持复数和数组类,提供常用函数,包括"部分和(partial sum)"以及"相邻差值(adjacent difference)".

    3. 标准库特点

        1). 高度模板化——每一样东西几乎都是template.例如string是basic_string<char>的typedef(basic_string还可支持wide char,unicode char),IOstreams也是template,它有个类型参数(type parameter)用来定义streams(数据流)的字符类型.

        2). 所有成分都位于namespace std内.

    4. Standart Template Library(STL)

        1). STL占据了C++标准库的大部分,主要包括三部分:容器(container),迭代器(iterator),泛型算法(algorithm).其中容器持有对象,迭代器用于遍历容器元素,泛型算法则基于迭代器实现不依赖于具体类型的函数模板.

        2). STL是可扩充的,只要遵循STL的标准,可以将自己的容器,迭代器,算法等结合STL使用.(要使自定义的迭代器适用于STL的泛型算法,需要了解C++的traits技法,见Effective C++ 条款47)

  • 相关阅读:
    ubuntu12.04 死机 卡屏 画面冻结解决方案
    Install Firefox 20 in Ubuntu 13.04, Ubuntu 12.10, Ubuntu 12.04, Linux Mint 14 and Linux Mint 13 by PPA
    ListView1.SelectedItems.Clear()
    android studio 下载地址
    jquery.slider.js jquery幻灯片测试
    jquery.hovermenu.js
    jquery.tab.js选项卡效果
    适配 placeholder,jquery版
    jquery.autoscroll.js jquery自动滚动效果
    将 Google Earth 地图集成到自己的窗体上的 简单控件
  • 原文地址:https://www.cnblogs.com/reasno/p/4879001.html
Copyright © 2011-2022 走看看