理解灵活而奇特的C++-ch09

1.引用? 编程

    引用的概念:引用就是被引用变量的别名,这就意味着被引用变量能够经过两个或多个命名标识符访问内存,故这些命名标识符的内存地址是相等的,引用能够视为隐式的指针变量。可是没有指针变量的解引用和对变量的取    地 址的麻烦。下面是引用变量的一些结论和使用误区: 安全

    C1:引用变量必须在声明的时候就有初值,这个初值有两层含义。被引用内存的值和地址。而且,一旦引用,终身引用。即引用变量一旦引用了一个内存,不能再引用别的内存。注意和用别的变量来赋值的区分。好比: 函数

        T x=...,y=... spa

        T& refx=x;        表示refx和x共享同一片内存。 指针

        refx=y;                表示修改引用内存中的值,而不是该向引用y的内存。等价于x=y; 对象

    C2: 同指针变量同样,多个引用变量能够共享统一内存,在这些引用变量的任何一个对共享内存(数据)的修改在其余的全部引用变量可见。 内存

    C3:const  T&不能修改引用内存(内存中的数据),可是能够读取。 效率

    C4 :引用变量的对象能够提升函数参数传递和从函数返回的效率,从而避免了赋值内存,而是复制内存地址,至关于在同一内存上的操做。对于对象而言,更是避免了函数参数(以对象)传递和返回对象由于赋值对象而调用复制构造函数的开销。可是非const引用可能不经意间修改内存,那么const T&更为经常使用。const T&的特色那就是更安全、更高效。 变量

    C5:引用能够想象成不能改指的指针。T* const. 构造函数

    C6:基于申明引用的同时就要初始化引用变量(让它引用被引用变量的内存)考虑,类中的引用数据成员必须用成员初始化器初始化引用数据成员。事实上,使用成员初始化器初Ctor,始化成员的好处远不止这些。

    C7:const T&能够引用右值(又叫右值引用),右值一般是一些const对象/变量、常量、临时变量或对象、未命名的内存(无名变量)等,而左值引用刚好相反,它必须引用一个清晰定义了的内存,即合法的命名内存(由于计算机按名存取变量)。

    C8:能够对任意数据类型的变量引用,甚至是指针变量(指针的引用,引用的是一个指针变量)。可是没法声明引用的引用(&&)和指向引用的指针。

    C9:最后一点,引用应该尽量引用一个合法标识符标示的未被释放(注销或销毁)的内存。由于,被引用的变量消失,引用失效。这可能致使一些难以预料或不可诊断的BUG,或一些标准之外的未定义行为发生。

    总之,决定引用变量引用哪一个内存(变量)的惟一之处就是在声明引用变量时,初始化的那个内存缓冲区。

    编程箴言,引用比指针安全,const引用比非const引用安全。引用劣于指针的一点大概就是,指针变量能够改指,引用变量毫不可能改指。


      


2.文本?

3.文本表达式?

4.静态(static)?

5.外部(extern)?

6.类型定义(typedef)

7.类型别名(aliases)?

8.类型转换?

9.做用于解析?

10.统一初始化?

11.可选函数语法?

12.空指针文本?

13.尖括号?

14.初始化列表?

15.显示转换运算符?

16.特性?

17.用户自定义的文本?

18.可变参数列表?

19预处理宏?

相关文章
相关标签/搜索