当前位置: 首页 > news >正文

const constexpr

首先用几个简单的例子来说明一下两者的基本使用,就可以看出来相同点和不同点了。

const主要在于:只读

constexpr顾名思义常量表达式:常量

1)只读 | 常量

#include <iostream>
#include <array>using namespace std;void dis_1(const int x) {array<int, x> myarr{1, 2, 3, 4, 5}; // 错误,x是只读的变量(本质仍未变量)cout << myarr[1] << endl;
}void dis_2() {const int x = 5;                    // 正确,只读变量的同时,还是一个值为5的常量array<int, x> myarr{1, 2, 3, 4, 5};cout << myarr[1] << endl;
}int main()
{dis_1(5);dis_2();
}

2)“只读” 与 “不允许被修改” 的区别:


#include <iostream>using namespace std;int main()
{int a = 10;const int& con_b = a;cout << con_b << endl;    // 10a = 20;cout << con_b << endl;    // 20
}

3)const & constexpr区别: 

#include <iostream>
#include <array>using namespace std;constexpr int sqr1(int arg) {return arg*arg;
}const int sqr2(int arg) {   // warning: 'const' type qualifier on return type has no effectreturn arg*arg;
}int main()
{array<int, sqr1(10)> mylist1;   // 可以,因为sqrt1是constexpr函数array<int, sqr2(10)> mylist2;   // 不可以,因为sqrt1不是constexpr函数return 0;
}

总的来说在 C++ 11 标准中,const用于为修饰的变量添加“只读”属性;而 constexpr关键字则用于指明其后是一个常量(或者常量表达式),编译器在编译程序时可以顺带将其结果计算出来,而无需等到程序运行阶段,这样的优化极大地提高了程序的执行效率。


http://www.mrgr.cn/news/9938.html

相关文章:

  • ansible之roles
  • 三岁不说话,是自闭症前兆吗?
  • QDialog中的不同模式
  • 5 分钟 Stable Diffusion 本地安装指南
  • 学习记录——day35 数据库 sqlite3
  • 浅谈网络安全模型——PPDR模型
  • leetcode 数组+哈希+双指针+子串+滑动窗口
  • 开发团队如何应对突发的技术故障和危机?快速响应与问题定位策略
  • 《机器学习》决策树 C4.5算法、cart算法
  • 笔记整理—uboot启动过程(6)env_init与init_sequence总结
  • 计算机基础知识复习8.21
  • MySQL——多表操作(一)外键(1)什么是外键
  • 【Oracle问题】ORA-12516:监听程序找不到符合协议堆栈要求的可用处理程序问题处理
  • Windows-Server-2016/2019绕过WindowsDefender
  • 多维度对比社保与个人养老金,个养要不要买?其实社保也是自己买的
  • 文件批量重命名【JAVA】【正则表达式】
  • 餐饮商标怎么注册自己的品牌!
  • 苹果微信误删了聊天记录怎么恢复?4个方法,几分钟就能恢复
  • ICCV2023:Co-DETR:DETRs与协同混分配训练
  • 手撕顺序表