zoukankan      html  css  js  c++  java
  • 读书笔记之:C++大学教程(第2版)

    这是《C++大学教程》第2版的一些记录。第二版显得比较旧,具体时间我没有查到,从其中的内容看来应该是C++标准推出之前。

    1. C++中获取随机数

    srand函数只要在程序中调用一次即可得到所需要的随机化结果,多次调用是多余的,会降低程序性能。

    由rand函数直接产生的值总是取值为:

    0<<rand()<<RAND_MAX

    常见错误:

    用srand函数代替rand函数产生随机数是个语法错误,因为srand函数不返回值。

    2. C++中的存储类

    C++提供了4个存储类说明符:auto,register,extern和static。标识符的存储类说明符可以确定其存储、范围和连接。

    标识符的存储类确定了标识符在内存中存在的时间。有些标识符的存在时间很短,有些则重复生成和删除,有些存在于整个程序的执行期间。

    标识符的作用域是程序中能引用这个标识符的区域。有些标识符可以在整个程序中引用,而有些标识符只能在程序中的有限部分引用。

    标识符的连接确定多源文件程序中,只有当前源文件或是在任何正确声明的源文件中识别标识符。

    3. 为了获得程序的清晰性和高性能,许多C++程序员喜欢通过指针将可修改参数传递给函数,不可修改的小参数按值调用传递,而不可修改的大参数常用引用传递给参数

    4. 构造函数与析构函数的执行顺序

    全局范围中定义的对象的构造函数在文件中的任何其他函数(包括main)执行之前调用(但不同文件之间全局对象构造函数的执行顺序是不确定的)。当main终止或调用exit函数时调用相应的析构函数。

    static局部对象的构造函数只在程序首次执行到达对象定义时调用一次,对应的析构函数在main终止或调用exit函数时调用。

    不要返回对private数据成员的引用

    const对象的构造函数和析构函数不需要const声明。构造函数应允许修改对象,这样才能正确的将对象初始化。析构函数应能在对象删除之前进行清理工作。

    7. this指针

    对象的this指针不是对象本身的一部分,即this指针不在对该对象进行sizeof操作的结果中体现。但this指针在每次非staitc成员函数调用对象时作为第一个隐式参数传递给对象(通过编译器)

    this指针的类型取决于对象类型和使用this的成员函数是否声明为cosnt。在Employee类的非常量成员函数中,this的类型是Employee*const(Employee对象 的常量指针)。在Employee类的常量成员函数中,this指针的类型为cosnt Employee*const(常量Employee对象 的常量指针)

    8.

    为了节约存储空间,每个类的每个成员函数只有一个副本,该类的每个对象都可以调用这个成员函数。另一方面,每个对象又有自己的类数据成员副本。

    9.

    this指针的一个有趣的用法是防止对象赋值给自己。自我赋值可能在对象包含动态分配内存的指针时导致严重的错误。

    10.

    函数原型和定义中都要指定const

    const成员函数可以用非const版本重载。编译器根据对象是否声明为const自动选择所用的重载版本。

    const对象应初始化。要用成员初始化值向构造函数提供类对象数据成员的初始值。

    11.

    友元关系声明可以放在类中任何地方。

    类的友元函数在类范围之外定义,但有权访问类的所有成员。

    12.

    虚函数与性能

    多态性(它是用虚函数和动态关联实现的)是高效的,程序员使用这种功能对系统性能的影响极小。

    虚函数和动态关联使得多态性编程和switch逻辑编程形成了对照。C++优化编译器通常能够生成至少和手写的基于switch逻辑的代码具有同样效率的代码。对大多数应用程序而言,多态的开销是可以接受的。但有时则不能接受多态的开销,例如性能要求很高的实时应用程序。

    在STL组件中是不使用多态和虚函数的,这是为了避免运行开销,从而达到符合STL特定要求的最优性能。

    13.

    c++中的虚继承是针对多重继承中可能出现的问题而提出的。菱形继承

  • 相关阅读:
    log4j配置文件及nutch中的日志配置 分类: B1_JAVA 2015-02-17 10:58 483人阅读 评论(0) 收藏
    slf4j教程
    Java中的日期操作 分类: B1_JAVA 2015-02-16 17:55 6014人阅读 评论(0) 收藏
    Avro基础 分类: C_OHTERS 2015-02-14 19:56 310人阅读 评论(0) 收藏
    【JAVA编码专题】总结 分类: B1_JAVA 2015-02-11 15:11 290人阅读 评论(0) 收藏
    【JAVA编码专题】深入分析 Java 中的中文编码问题 分类: B1_JAVA 2015-02-10 21:09 153人阅读 评论(0) 收藏
    【JAVA编码专题】UNICODE,GBK,UTF-8区别 分类: B1_JAVA 2015-02-10 21:07 153人阅读 评论(0) 收藏
    【JAVA编码专题】 JAVA字符编码系列三:Java应用中的编码问题 分类: B1_JAVA 2015-02-10 21:05 135人阅读 评论(0) 收藏
    【JAVA编码】 JAVA字符编码系列二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换 分类: B1_JAVA 2015-02-10 21:03 152人阅读 评论(0) 收藏
    【JAVA编码专题】JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础 分类: B1_JAVA 2015-02-10 21:01 158人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/xkfz007/p/2433169.html
Copyright © 2011-2022 走看看