常量表达式必须计算为整型吗?
假设我有以下内容:
int i = 1;
String str("abc");
str
会被视为常量表达式吗?
从很多 C++ 书籍来看,常量表达式似乎必须计算为整型。
Lets say I have the following:
int i = 1;
String str("abc");
Would str
be consider a constant expression?
From lots of C++ books, it seems a constant expression must be evaluated to an integral type.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,不会的。 C++11 中引入了一个新关键字
constexpr
,它有助于概括常量表达式的概念。如果来自"abc"
的String
构造函数足够简单,那么可以将其声明为constexpr
;但是这样的构造函数可能必须分配内存,因此它不符合条件。No, it won't. In C++11 there is a new keyword
constexpr
introduced that helps generalize the notion of constant expressions. IfString
constructor from"abc"
is trivial enough then it could be declaredconstexpr
; however such constructor probably has to allocate memory so it wouldn't qualify.