为什么int&r = 0是非法的而const int&r = 0是合法的?

雷神

我是C ++的新手。我正在尝试学习const的概念。有人可以告诉我为什么第一句话是非法的而第二句话是合法的吗?

int i = -1, &r = 0;         

const int i = -1, &r = 0;  
毫米

i是一个红色的鲱鱼在这里,问题是int &r = 0;const int &r = 0;

非常量左值引用必须直接绑定到左值。0不是左值,因此int &r = 0;失败。

常量左值引用可以绑定到右值。发生这种情况时,它不会直接绑定。相反,将const int创建一个临时(此处为类型)并从右值复制初始化。借助此绑定,可以延长临时项的寿命。

因此const int &r = 0;合法,并具有与const int __temp = 0; const int &r = __temp;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么语句int null = 0,* p = null是非法的?

来自分类Dev

C ++中int&r = x和r = y有什么区别?

来自分类Dev

为什么 int('.0') 给出 ValueError?

来自分类Dev

为什么 type(((),)[0]) 是元组而不是 int?

来自分类Dev

在以下代码的上下文中,为什么“ cout << c”是合法的而“ c =“ x””是非法的?

来自分类Dev

为什么JVM为什么使用全0的巨数int []?

来自分类Dev

在C ++中,为什么在此程序中,每个const char *都为空,每个int都为0?

来自分类Dev

是std :: vector :: reserve(0); 合法的?

来自分类Dev

public int [] [] GetArray()说表达式的开头是非法的

来自分类Dev

为什么此Int32总和总是返回0?

来自分类Dev

为什么需要将int变量初始化为0?

来自分类Dev

PHP int比较-为什么要先在变量中加0?

来自分类Dev

为什么SPARC或MIPS的%r0始终为0?

来自分类Dev

如果int不是一个类,为什么int x = int(5)是合法的?

来自分类Dev

为什么要(“ 0” +“ 1”)。toInt()!返回1作为Int,而不是0

来自分类Dev

为什么(int)'\ xff'!= 0xff但(int)'\ x7f'== 0x7f?

来自分类Dev

C ++:为什么构造函数“ A(A a){}”是非法的?

来自分类Dev

为什么typedef模板是非法的?

来自分类Dev

为什么嵌套的锚标签是非法的?

来自分类Dev

为什么嵌套的锚标签是非法的?

来自分类Dev

在R中,为什么不-1 + 1 = 0

来自分类Dev

R - 为什么我的曲线不从 (0,1) 开始?

来自分类Dev

c++ 中的“int a, b =0”和“int a =0; int b = 0”有什么区别?

来自分类Dev

这个“ for”循环会停止吗,为什么/为什么不呢?为(int i = 1; 1 / i> 0; i ++){}

来自分类Dev

为什么“ const int *”指向非const int?

来自分类Dev

为什么(int)(1.0 / x)其中x = 0导致In32.MinValue而不是Int32.MaxValue?

来自分类Dev

内存浪费?如果main()应该只返回0或1,为什么main是用int而不是short int甚至char声明的?

来自分类常见问题

为什么强制转换为int给我8而不是0?

来自分类Dev

为什么List <T>(Int32)的.Count的初始大小为0?

Related 相关文章

  1. 1

    为什么语句int null = 0,* p = null是非法的?

  2. 2

    C ++中int&r = x和r = y有什么区别?

  3. 3

    为什么 int('.0') 给出 ValueError?

  4. 4

    为什么 type(((),)[0]) 是元组而不是 int?

  5. 5

    在以下代码的上下文中,为什么“ cout << c”是合法的而“ c =“ x””是非法的?

  6. 6

    为什么JVM为什么使用全0的巨数int []?

  7. 7

    在C ++中,为什么在此程序中,每个const char *都为空,每个int都为0?

  8. 8

    是std :: vector :: reserve(0); 合法的?

  9. 9

    public int [] [] GetArray()说表达式的开头是非法的

  10. 10

    为什么此Int32总和总是返回0?

  11. 11

    为什么需要将int变量初始化为0?

  12. 12

    PHP int比较-为什么要先在变量中加0?

  13. 13

    为什么SPARC或MIPS的%r0始终为0?

  14. 14

    如果int不是一个类,为什么int x = int(5)是合法的?

  15. 15

    为什么要(“ 0” +“ 1”)。toInt()!返回1作为Int,而不是0

  16. 16

    为什么(int)'\ xff'!= 0xff但(int)'\ x7f'== 0x7f?

  17. 17

    C ++:为什么构造函数“ A(A a){}”是非法的?

  18. 18

    为什么typedef模板是非法的?

  19. 19

    为什么嵌套的锚标签是非法的?

  20. 20

    为什么嵌套的锚标签是非法的?

  21. 21

    在R中,为什么不-1 + 1 = 0

  22. 22

    R - 为什么我的曲线不从 (0,1) 开始?

  23. 23

    c++ 中的“int a, b =0”和“int a =0; int b = 0”有什么区别?

  24. 24

    这个“ for”循环会停止吗,为什么/为什么不呢?为(int i = 1; 1 / i> 0; i ++){}

  25. 25

    为什么“ const int *”指向非const int?

  26. 26

    为什么(int)(1.0 / x)其中x = 0导致In32.MinValue而不是Int32.MaxValue?

  27. 27

    内存浪费?如果main()应该只返回0或1,为什么main是用int而不是short int甚至char声明的?

  28. 28

    为什么强制转换为int给我8而不是0?

  29. 29

    为什么List <T>(Int32)的.Count的初始大小为0?

热门标签

归档