c++11 常量表达式

#define _CRT_SECURE_NO_WARNINGS#include <iostream>
#include <string>
#include <vector>
#include <map>/*** 常量表达式主要是允许一些计算发生在编译时,即发生在代码编译而不是运行的时候。* 这是很大的优化:假如有些事情可以在编译时做,它将只做一次,而不是每次程序运行时都计算。*//*
constexpr函数的限制:
函数中只能有一个return语句(有极少特例)
函数必须返回值(不能是void函数)
在使用前必须已有定义
return返回语句表达式中不能使用非常量表达式的函数、全局数据,且必须是一个常量表达式
*/
constexpr int GetConst()
{return 3;
}
//err,函数中只能有一个return语句
constexpr int data()
{constexpr int i = 1;return i;
}
constexpr int data2()
{//一个constexpr函数,只允许包含一行可执行代码//但允许包含typedef、 using 指令、静态断言等。static_assert(1, "fail");return 100;
}int a = 3;
constexpr int data3()
{return a;//err, return返回语句表达式中不能使用非常量表达式的函数、全局数据
}/*
常量表达式的构造函数有以下限制:
函数体必须为空
初始化列表只能由常量表达式来赋值
*/
struct Date
{constexpr Date(int y, int m, int d): year(y), month(m), day(d) {}constexpr int GetYear() { return year; }constexpr int GetMonth() { return month; }constexpr int GetDay() { return day; }private:int year;int month;int day;
};void mytest()
{int arr[GetConst()] = {0};enum {e1 = GetConst(), e2};constexpr int num = GetConst();constexpr int func(); //函数声明,定义放在该函数后面constexpr int c = func();  //err, 无法通过编译, 在使用前必须已有定义
constexpr Date PRCfound {1949, 10, 1};constexpr int foundmonth = PRCfound.GetMonth();std::cout << foundmonth << std::endl;  // 10return;
}constexpr int func()
{return 1;
}int main()
{mytest();system("pause");return 0;
}

c++11 常量表达式相关推荐

  1. [C++11]常量表达式函数

    constexpr修饰函数. 普通函数/类成员函数. 1.函数必须要有返回值,并且return返回的表达式必须是常量表达式. 代码如下: #include <iostream> using ...

  2. C++11之常量表达式(const与constexpr的区别)

    系列文章 C++11之正则表达式(regex_match.regex_search.regex_replace) C++11之线程库(Thread.Mutex.atomic.lock_guard.同步 ...

  3. c语言 常量表达式,C++11 constexpr:验证是否为常量表达式(长篇神文)

    constexpr 是 C++ 11 标准新引入的关键字,不过在讲解其具体用法和功能之前,读者需要先搞清楚 C++ 常量表达式的含义. 所谓常量表达式,指的就是由多个(≥1)常量组成的表达式.换句话说 ...

  4. C++11 nullptr与常量表达式constexpr记录

    1.nullptr (1) nullptr是一个关键字,而nullptr_t是一个类型 typedef decltype(nullptr) nullptr_t 使用nullptr_t类型必须包含#in ...

  5. C++11:常量表达式

    常量表达式主要是允许一些计算发生在编译时,即发生在代码编译阶段而不是代码运行阶段.这是很大的优化,因为如果有些事情可以在编译时做,那么它只会做一次,而不是每次程序运行时都计算. 使用constexpr ...

  6. 常量表达式(constexpr)

    首先,常量表达式的概念:在编译期就可以计算出结果的表达式 那么为什么要用常量表达式呢,用常量表达式会有什么好处: 1.允许一些计算只在编译时进行一次,而不是每次程序运行时: 2.编译器可以进行尺度更大 ...

  7. c++nullptr(空指针常量)、constexpr(常量表达式)

    总述     又来更新了,今天带来的是nullptr空指针常量.constexpr(常量表达式)C++的两个用法.Result result_fun = nullptr;constexpr stati ...

  8. C++常量表达式函数

    目录 常量表达式的功能 constexpr关键字和用户定义型别 constexpr对象 constexpr函数 constexpr模版 整数字面值即为常量表达式(constant expression ...

  9. (P3-P4)constexpr修饰常量表达式和常量表达式函数

    文章目录 1. const 2.constexpr 3.常量表达式函数 1. const 在 C++11 之前只有 const 关键字,从功能上来说这个关键字有双重语义:变量只读,修饰常量 eg: v ...

最新文章

  1. Java 参数后面跟三个... 的作用
  2. 从别人那拷下来的几点Session使用的经验(转载)
  3. java框内的值怎么同步_java并发编程使用锁进行数据同步操作一
  4. 安装caffe碰到的坑
  5. Python 爬虫利器 Beautiful Soup 4 之文档树的搜索
  6. 06 事件处理函数绑定与事件对象
  7. mysql查看索引创建进度_SQL Server查看索引重建、重组索引进度
  8. 生成特定分布随机数的方法
  9. Ubuntu16.04实现Sphinx离线语音识别
  10. HTTP/2之服务器推送(Server Push)最佳实践
  11. Android 存储学习之使用SharedPreference保存文件
  12. linux安装vsftpd并配置文件,Linux 系统下 vsftpd 的安装与配置
  13. Python学习笔记-基础篇
  14. 笔记本有线及无线的MAC地址修改
  15. android 人工智能测试,人工智能(AI)测试方法
  16. 最后一本书 第六章课后练习3,4
  17. GitHub分享的微软开源计算器项目
  18. apfs扩容_向 APFS 文件系统转进:iOS 10.3 为 iPhone 变相扩容存储空间
  19. 双边网格学习一:2021cvpr《Ultra-High-Definition Image Dehazing via Multi-Guided Bilateral Learning》
  20. BFS广度优先搜索之钥匙和房间

热门文章

  1. C#中ArrayList的简单使用
  2. Cordova打包教程知识体系整理(Vue项目打包成ipa)
  3. Git操作之配置别名
  4. 写聊天室之前 了解聊天室拓展出来的各种知识点
  5. 在服务器上处理gis文件,云服务器处理gis
  6. 八城联动 丨 神策 2020 数据驱动用户大会「长沙站」重磅来袭!
  7. 【CEO赠书】《精益数据分析》:如何构建数据指标体系
  8. getDeclaredField和getField的区别
  9. 重磅!GitHub 开源负载均衡组件 GLB Director
  10. 新纳米结构能加快电子设备运行