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

广州市手机网站建设品牌江南网盟-专注中小企业网站建设服务

广州市手机网站建设品牌,江南网盟-专注中小企业网站建设服务,网站建设捌金手指专业8,济南怎么做网站跟CZY一起深入理解C些基础知识 常量constconstexpr 初始化枚举与枚举类分离编译 常量 const 常量亦即不可改变的量(实际上可以暴力破解),那么常量在C中主要有以下几种应用场景 定义常量变量 //如果有以下情况,在GCC上能够破解,而在MSVC上不会改变 // int放在栈区,实际上是可… 跟CZY一起深入理解C些基础知识 常量constconstexpr 初始化枚举与枚举类分离编译 常量 const 常量亦即不可改变的量(实际上可以暴力破解),那么常量在C中主要有以下几种应用场景 定义常量变量 //如果有以下情况,在GCC上能够破解,而在MSVC上不会改变 // int放在栈区,实际上是可以修改的,const是一种用户层的限制 const int CN 300; int* b const_castint*(CN); *b 100;static const int CN 100; //如果有以下情况,会直接导致coredump,无论在MSVC还是GCC上结果都一致 //原因在于static const 在静态常量区,这个区是无论如何也不能被修改的,修改会直接导致coredump的发生 int* b const_castint*(CN); *b 100;定义常量指针 ///const 修饰指针的指向,指针可变,指针指向的对象不可变 const int* ptrToConst myConstVar;定义指针常量 ///const修饰指针,指针不可变,指针指向的对象可变 int* const constPtr myVar;定义常量引用 /// 由于引用本身就是不可改变所引用的对象的 ///故常量引用是指引用所指的对象不可变 const int constRef myVar;常量成员函数 class MyClass { public:void regularFunction() {// 可以修改成员变量myVar 10;}void constFunction() const {// 不能修改成员变量只能读取/// 这里刚好介绍一下mutable的相关知识/// 若myVar前面加上了mutable关键字,那么在常量成员函数中可以修改///最常见的场景就是常量成员函数需要加锁的情况,互斥量在加锁过程中是///需要修改的,所以要用mutable修饰互斥量使得常量成员函数中也能加上锁int x myVar;} private:int myVar; };对函数参数进行修饰 void func(const a,const b){ ///对参数的修饰见上文,语义是一致的 } constexpr 有了const为什么还需要constexpr呢,constexpr代表的其实是一种期望语义,告诉编译器该值有可能在编译期间算出来,那么编译器就会尽可能的在编译期算出来,见下面的例子 constexpr int getArrSize(int a,int b){return a b; }constexpr int A 30; constexpr int B 30; int main() {constexpr int arrSize getArrSize(A,B);///这里arrSize的值能够在编译器确定,因此可以申明这样的数组///而如果getArrSize的返回值不用constexpr申明,那么将不再通过编译int arr[arrSize];std::cout sizeof(arr)/sizeof(int) std::endl;getchar();return 0; }总结:constexpr提高了C在编译时的计算能力,并且能用更加简洁的方式进行模板元编程,测验,constexpr到底在哪个区呢,实际上constexpr的内存区域存储位置取决于其声明的位置 初始化 等值初始化和花括号初始化都是常见的初始化形式 更加推荐{}初始化,理由有以下几点, 传统的初始化(初始化),会尝试隐式转换.这可能造成精度丢失等问题 int a 3.7;//ok int a{3.7};//compiler error可读性更好 但要注意转化成initial_list的问题 枚举与枚举类 更加推荐使用枚举类 假设存在下面场景 enum class Color{Red 0;Black 1; }; enum class TraficLight{Red 1;Green 0; };如果不用enum class 那么就会上报一个Red重定义的错误,而且enum class 也避免了如下的情况发生 Color TraficLight::Red;//error int c Color::Red;///error这避免了很多程序中潜在的错误,你可以为枚举类定义运算符,例如 enum class Light {Red 2,Black }; Light operator(Light t){switch(t){case(Light::Red):{t Light::Black;return t;}}return t; }分离编译 c支持分离编译的概念,用户代码只看见类型和函数声明,定义被放在分离的源文件中,被分别编译,将编译时间降低到最少,一个库可以理解成一组分离编译的代码的集合 如上图所示,user.cpp和Vector.cpp共享Vector.h的接口,但是编译的过程是分离开来的
http://www.hkea.cn/news/14389220/

相关文章:

  • 正规网站建设推荐可以看电视剧的网站
  • 网站做长尾词好还是单个词好网站去哪备案
  • dede网站暂时关闭调兵山网站建设
  • 给网站做广告苏州建设有限公司
  • 泰安企业建站公司排行手机网站设计规格
  • 哪些公司用.cc做网站设计网站都有什么作用
  • 如何网站建设有利于网络营销东莞网页开发
  • 可以做公众号背景图的网站无锡seo公司哪家好
  • 网站排名怎样做有效wordpress多账号权限
  • 网站做外链的具体步骤内蒙古建设部网站官网
  • mysql做镜像网站网站建站公司排行
  • 江门网站推广多少钱运城网站建设求职简历
  • 哪些行业做网站推广的多在哪个网站找装修公司
  • 深圳网站维护页面设计小程序开发费用是多少
  • 北京网站建设上北京九五至尊网络滨州网站建设hskj360
  • 广州部队网站建设费用电子商务网站建设与管理课后答案
  • 建设银行官方网站手机版下载安装wordpress盈利
  • 网站建设的结构乡村建设网站
  • 为什么一个人做网站有难度帝国cms网站公告怎么做
  • 深圳福田网站建设福步外贸app下载
  • 网站建设模板能实现按钮跳转吗阿里免费版企业邮箱
  • 蒲城矿建设备制造厂网站定制网站要多少钱
  • 电机东莞网站建设京山网站建设
  • 网站建设要注意西安网站排名优化
  • 网站开发的人怎么样秦皇岛市 网站建设
  • 网站代理服务器有问题儿童网站欣赏
  • 鹰潭建设网站公司唐山建网站公司
  • html链接网站模板查询公司信息的网站
  • 莱芜可信赖的网站建设产品推广文案
  • 公司做自己的网站平台台让你的静态网站 做后台