c++11 常量表达式
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 常量表达式相关推荐
- [C++11]常量表达式函数
constexpr修饰函数. 普通函数/类成员函数. 1.函数必须要有返回值,并且return返回的表达式必须是常量表达式. 代码如下: #include <iostream> using ...
- C++11之常量表达式(const与constexpr的区别)
系列文章 C++11之正则表达式(regex_match.regex_search.regex_replace) C++11之线程库(Thread.Mutex.atomic.lock_guard.同步 ...
- c语言 常量表达式,C++11 constexpr:验证是否为常量表达式(长篇神文)
constexpr 是 C++ 11 标准新引入的关键字,不过在讲解其具体用法和功能之前,读者需要先搞清楚 C++ 常量表达式的含义. 所谓常量表达式,指的就是由多个(≥1)常量组成的表达式.换句话说 ...
- C++11 nullptr与常量表达式constexpr记录
1.nullptr (1) nullptr是一个关键字,而nullptr_t是一个类型 typedef decltype(nullptr) nullptr_t 使用nullptr_t类型必须包含#in ...
- C++11:常量表达式
常量表达式主要是允许一些计算发生在编译时,即发生在代码编译阶段而不是代码运行阶段.这是很大的优化,因为如果有些事情可以在编译时做,那么它只会做一次,而不是每次程序运行时都计算. 使用constexpr ...
- 常量表达式(constexpr)
首先,常量表达式的概念:在编译期就可以计算出结果的表达式 那么为什么要用常量表达式呢,用常量表达式会有什么好处: 1.允许一些计算只在编译时进行一次,而不是每次程序运行时: 2.编译器可以进行尺度更大 ...
- c++nullptr(空指针常量)、constexpr(常量表达式)
总述 又来更新了,今天带来的是nullptr空指针常量.constexpr(常量表达式)C++的两个用法.Result result_fun = nullptr;constexpr stati ...
- C++常量表达式函数
目录 常量表达式的功能 constexpr关键字和用户定义型别 constexpr对象 constexpr函数 constexpr模版 整数字面值即为常量表达式(constant expression ...
- (P3-P4)constexpr修饰常量表达式和常量表达式函数
文章目录 1. const 2.constexpr 3.常量表达式函数 1. const 在 C++11 之前只有 const 关键字,从功能上来说这个关键字有双重语义:变量只读,修饰常量 eg: v ...
最新文章
- Java 参数后面跟三个... 的作用
- 从别人那拷下来的几点Session使用的经验(转载)
- java框内的值怎么同步_java并发编程使用锁进行数据同步操作一
- 安装caffe碰到的坑
- Python 爬虫利器 Beautiful Soup 4 之文档树的搜索
- 06 事件处理函数绑定与事件对象
- mysql查看索引创建进度_SQL Server查看索引重建、重组索引进度
- 生成特定分布随机数的方法
- Ubuntu16.04实现Sphinx离线语音识别
- HTTP/2之服务器推送(Server Push)最佳实践
- Android 存储学习之使用SharedPreference保存文件
- linux安装vsftpd并配置文件,Linux 系统下 vsftpd 的安装与配置
- Python学习笔记-基础篇
- 笔记本有线及无线的MAC地址修改
- android 人工智能测试,人工智能(AI)测试方法
- 最后一本书 第六章课后练习3,4
- GitHub分享的微软开源计算器项目
- apfs扩容_向 APFS 文件系统转进:iOS 10.3 为 iPhone 变相扩容存储空间
- 双边网格学习一:2021cvpr《Ultra-High-Definition Image Dehazing via Multi-Guided Bilateral Learning》
- BFS广度优先搜索之钥匙和房间