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
时间: 2024-11-03 08:43:29