首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态的常量初始化

动态的常量初始化
EN

Stack Overflow用户
提问于 2014-06-30 11:25:37
回答 2查看 60关注 0票数 1

我认为声明为const的变量只适用于Static Initialization。我写了以下几篇文章:

代码语言:javascript
复制
#include <cstdlib> 
#include <iostream>

struct A{ };

const A *i = new A();

int main(){ }

而且效果很好。

艾德龙

但是我认为代码是无效的,因为new A()是一个new-expression,而不是一个constant expression。事实上:证交会。5.19/2 N3797:

条件表达式e是核心常量表达式,除非e的计算遵循抽象机器(1.9)的规则计算下列表达式之一: ..。 -新的-表达(5.3.4); ..。

常数表达式要么是一个glvalue核心常量表达式,其值是指具有静态存储时间的对象,要么是函数,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-30 11:29:27

首先,您可能是指A * const i (指向A的常量指针),而不是const A * i (指向const A的非常量指针)。

尽管如此,即使进行了这种修改,使用一个非常量表达式的值(例如在运行时计算的值)初始化const变量也是完全合法的。然而,在常量表达式中使用这样的变量是不可能的。如果尝试这样做,常量表达式定义就会启动,您就会得到一个错误。

票数 4
EN

Stack Overflow用户

发布于 2014-06-30 11:29:25

const变量的初始化不需要常量表达式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24489060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档