#include <iostream>
2
3 using namespace std;
4
5 int main()
6 {
7
8 int a=1;
9 int b=2;
10 int &ra = a;
11 int *ptr = &a;
12 /*
13 *1.decltype对于括号和解引用操作符*,会解析为引用&
14 *int &ra = a;
15 *decltype(ra) da; //int &
16 *decltype(a) db; //int
17 *decltype((a)) dc;//int &,必须初始化,否则报错
18 */
19 // decltype(ra) refa; //int &,error:reference must initialized
20 decltype(a) testb; //int
21 // decltype((a)) refb; //int &,error:reference must initialized
22 // decltype(*ptr) refc;//int &,error:reference must initialized
23
24 /*
25 *2.decltype和auto对于const的处理对比
26 *decltype 保留底层const和顶层const
27 *auto只保留底层const
28 *auto不得不保留底层const是因为从底层const常量转换为没有底层const的变量是错误的
29 *const int *cpa = &i;
30 *auto a = cpa; //a是const int *
31 */
32 //顶层const,decltype保留,auto忽略
33 const int cona = 1;
34 decltype(cona) td = 1; // const int
35 auto hd = cona; //int
36 hd = 1; //ok
37 // td = 1; //error:const int read-only
38
39 //底层const,decltype保留,auto保留
40 const int *conb = &a;
41 decltype(conb) te = &a;//const int *
42 // *te = 2; //error:const int * read-only locatin
43 auto fe = conb; //const int *
44 // *fe = 3; //error:assignment of read-only location
45
46 //底层和顶层const
47 const int * const conc = &a;
48 decltype(conc) tf = &a; //const int * const
49 //tf = &b; //error:assignment of read-only variable
50 //*tf = 3; //error:assignment of read-only location
51 auto ft = conc; //const int *
52 ft = &b; //ok
53 // *ft = 4; //error:assignment of read-only location
54 return 0;
55 }
————————————————
版权声明:本文为CSDN博主「creator123123」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/creator123123/article/details/81572265
相关文章
- 07-18c – auto,decltype(自动)和尾随返回类型
- 07-18我的c++学习(8)运算符重载和友元
- 07-18AJAX学习笔记2:XHR实现跨域资源共享(CORS)以及和JSONP的对比
- 07-18SQL学习笔记(十一)Hive SQL和Presto SQL对比
- 07-18超细节的对比学习和SimCSE知识点
- 07-18c++学习笔记2--constexpr,类型别名,auto
- 07-18C++ Primer 学习笔记_63_重载运算符和转换 --转换和类类型【上】
- 07-18学习RXSwift之传统和Rx改在对比
- 07-18C++ Primer 学习笔记_5_变量和基本类型(续2)
- 07-18深度学习和目标检测系列教程 9-300:TorchVision和Albumentation性能对比,如何使用Albumentation对图片数据做数据增强