码迷,mamicode.com
首页 > 其他好文 > 详细

关于constexpr

时间:2016-03-18 13:24:06      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

1.以下语句是错误的:

int i=5;
constexpr int ic=i;

 constexpr期望得到一个常量的表达式,因此其初始化器必须是常量而不能是变量

 

2.用constexpr定义的指针是顶层而非底层的,即:它指向的地址是固定不变的。值得注意到是,在函数体内,变量的地址是可以改变的(即便它是常量)。只有函数体外的变量地址是不变的(即便它不是常量)。因此,以下语句是合法的:

int test(int n)
{
    n*=2;
    return n;
}

int t=5;
int a=test(t);

int main()
{
    constexpr int *p=&a;
    cout<<*p<<endl;
    return 0;
}

以上代码输出结果为10

关于constexpr

标签:

原文地址:http://www.cnblogs.com/slgnesin/p/5291621.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!