zoukankan      html  css  js  c++  java
  • c++第八天

    《c++ primer, 5E》第53页到第58页,笔记:

    1、非常量引用一定不能绑定const对象。例 const int ci = 1024; const int &r1 = ci;

    2、常量引用不一定要绑定const对象。例 int i = 42; const int &r1 = i;

    常量引用类似于对象的持有者,限制对所持对象的操作。

    3、区分 pointer to const 和 const pointer 声明方式的区别。(从右向左读)

    4、其实上面的内容用 【顶层const】 和 【底层const】就很容易理解,

    底层const针对指向常量的指针, 指针本身可以改变值,但必须指向常量。

    必须具有相同的底层const资格才可以执行拷贝操作。

    顶层const的值无法改变,但是可以作为字面值来使用。

    遇到的问题:不理解【默认状态下, const对象仅在文件内有效】

    课后练习:

    练习 2.26

    a不合法,const对象必须初始化 b合法

    c合法,cnt的常量特征仅仅在执行改变ci的操作时才会发挥作用

    d不合法


    练习 2.27

    只有a和f非法

    (a)int i = -1, &r = 0;

    非法, 非常量引用的初始值必须是一个对象

    (b)int *const p2 = &i2;

    合法。const pointer

    (c)const int i = -1, &r = 0;

    合法, 常量引用可以绑定字面值, 一般表达式

    (d) 合法

    (e) 合法

    (f) 非法

    (g) 合法

    练习 2.28

    从右向左读法

    a. 不合法。 cp首先是一个常量, 未初始化

    b. 不合法。 p2首先是一个常量, 必须初始化

    c. 不合法。 ic未初始化

    d. 不合法。 p3未初始化

    e. 合法。 p是一个指向常量的指针,而非常量

    练习 2.29

    a. 合法

    b. 不合法。p3 是一个指向常量的常量指针, p1是指向变量的指针, 如果合法,就会扩大常量的操作范围

    c. 不合法。变量指针无法持有常量

    d. 不合法。无法改变常量的值

    e. 不合法。无法改变常量的值

    f. 不合法。无法改变常量的值

    练习 2.30

    从左到右:

    v2 顶层常量, v1 无层变量,p1 无层变量, r1 对v1的引用

    p2 底层常量, p3 顶层常量, r2 既是顶层 const 也是底层 const

    练习 2.31

    mdzz 这题不做了, 总之就是, 具有相同底层资格才能赋值,

    顶层const不能赋值,必须初始化。

  • 相关阅读:
    Web 存储之localStorage
    webpack之font-awesome
    vue-cli快速构建vue项目
    npm与cnpm混用导致的问题
    错误:linker command failed with exit code 1 (use -v to see invocation)
    mac 显示隐藏文件
    iOS 不要使用tag传递TableViewCell的indexPath值
    iOS background location
    github+hexo 搭建个站
    iOS CoreBluetooth
  • 原文地址:https://www.cnblogs.com/xkxf/p/6359864.html
Copyright © 2011-2022 走看看