Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1346986
  • 博文数量: 244
  • 博客积分: 1039
  • 博客等级: 少尉
  • 技术积分: 1562
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-06 09:40
文章分类

全部博文(244)

文章存档

2021年(2)

2019年(6)

2018年(2)

2014年(1)

2013年(187)

2012年(47)

分类: C/C++

2018-08-26 15:36:12



参考资料

《C++ Primer》(第五版)


测试环境

VS2015/win7



常量表达式:

是指值不会改变,而且在编译过程中就能得到计算结果.



const 修饰的是常量表达式吗?

例子:


 const int a = 100;         // (1) 常量表达式
 const int b = a + 100;     // (2) 常量表达式
 const int sz = get_size();  // (3) 不是常量表达式,由于sz的值需要调用函数才能得出 


新的关键字 constexpr。

c++11 新标准规定,允许变量声明constexpr类型。编译期间验证常量表达式。并在编译期间进行优化。

  1. 简单的表达式,例子:

     constexpr int a = 10;           //常量表达式
     constexpr int b = a + 100;      //常量表达式 
  2. 使用函数

    1. 无参数函数
      int size()
      {
          return 10 + 20;
      }
      
      constexpr int sz = size();  //编译期间报错,因为无法确定size是常量表达式。 
      修改为如下即可:
      constexpr int size()
      {
          return 10 + 20;
      }
      
      constexpr int sz = size();  // 常量表达式 
    2. 带参数函数
      constepr int size(int a, int b)
      {
          return a + b;
      }
      constexpr int sz = size();  // 常量表达式

阅读(5040) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~