Auto 和 Decltye 的区别

Posted zhanghengyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Auto 和 Decltye 的区别相关的知识,希望对你有一定的参考价值。

/***auto 会去掉顶层const 和 &  而decltype 不会***/

//什么是顶层?
const int x=0, *ptr = x;
auto i = ptr; //i is int *
decltype(i) is const int *

int i = 42, *p = &i, &r = i;

decltype(i) x1 = 0;       //因为 i 为 int ,所以 x1 为int
auto x2 = i;              //因为 i 为 int ,所以 x2 为int

decltype(r) y1 = i;       //因为 r 为 int& ,所以 y1 为int&
auto y2 = r;              //因为 r 为 int& ,但auto会忽略引用,所以 y2 为int

decltype(r + 0) z1 = 0;   //因为 r + 0 为 int ,所以 z1 为int,
auto z2 = r + 0;          //因为 r + 0 为 int ,所以 z2 为int,

///对指针解引用之后decltype返回该类型指针的引用 , auto 只返回该类型
decltype(*p) h1 = i;      //这里 h1 是int&, 原因后面讲
auto h2 = *p;             // h2 为 int.


///另一个 decltype 返回与表达式形式相关 例如
int x=0;
decltype(x) is int
decltype( (x) ) is int&

decltype(auto) f1()
{
    int x=0;
    return (x);
}//返回值是int&

decltype(auto) f2()
{
    int x=0;
    return x;
}//返回值是int

///decltype 后面是表达式的时候 返回左值的引用
decltype(x = i) is int&//也就是说

 

以上是关于Auto 和 Decltye 的区别的主要内容,如果未能解决你的问题,请参考以下文章

[vuejs源码系列] auto detect CSS prefix

[Grid Layout] Use auto-fill and auto-fit if the number of repeated grid tracks is not to be def(代码片段

这两个代码片段有啥区别?

这两个代码片段之间有区别吗?如果有,那又如何? [复制]

字符串插值和片段之间有啥显着区别吗?

jquery 对象的 heightinnerHeightouterHeight 的区别以及DOM 元素的 clientHeightoffsetHeightscrollHeightoffset(代码片段