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)

  • 相关阅读:
    【总结整理】互联网名词
    【总结整理】数据分析对产品有什么用
    【总结整理】互联网产品的功能设计怎么做
    【总结整理】产品的信息架构
    【总结整理】用完即走
    【总结整理】如何系统地规划出具备上乘用户体验的网站--摘自《人人都是产品经理》
    【总结整理】如何与用户交流---摘自《人人都是产品经理》
    【总结整理】原创概念原创idea---摘自《结网》
    【总结整理】模仿的本质---摘自《结网》
    【转】深入理解java的String
  • 原文地址:https://www.cnblogs.com/reasno/p/4879001.html
Copyright © 2011-2022 走看看