首页 > 代码库 > 关于auto和decltype
关于auto和decltype
1 auto会忽略顶层const,保留底层const 2 3 int i = 0; 4 5 const int* const p = &i; 6 7 auto p2 = p; //p2是const int*,不是const int* const 8 //*p2 = 4; //错误,p指向常量 9 p2 = nullptr; //正确,p2本身不是常量10 11 12 auto不会保留引用类型,应该使用auto&13 14 int& x = i;15 16 auto m = x; //m是int,不是int&17 auto& n = x; //n是int&18 19 20 decltype(variable)回保留顶层const和底层const21 22 decltype(p) p3 = p; //p3是const int* const23 //*p3 = 4; //错误24 //p3 = nullptr; //错误25 26 27 decltype也会保留引用类型,decltype((variable)) 双括号的结果永远是引用28 29 int* p = &i;30 31 decltype(*p) r = i; //解引用指针得到引用类型32 decltype((i)) r = i; //引用33 decltype(r+0) b; // 通过r+0可以得到int34 decltype(*p+0) c; //意思同上35 36 37 用auto和decltype定义复杂的函数返回类型38 39 int array[10]; //array数组,下面定义一个函数,返回这个数组的指针40 int (* func())[10]; //以前的定义方法41 auto func2()->int(*)[10]; //C++11 尾置返回类型(星号必须加括号)42 decltype(array)* func3(); //用decltype43 44 45 定义函数指针46 47 int fun(int); //函数,下面定义函数指针48 int (*ffun)(int); //以前的方法49 auto f1(int)->int(*)(int); //用auto50 decltype(fun)* f2(int); //用decltype51 decltype(x) z = i;52 53 z=1986;54 55 cout<<i<<endl; // i=1986
关于auto和decltype
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。