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

腾讯云网站托管互联网外包公司有哪些

腾讯云网站托管,互联网外包公司有哪些,月子中心网站设计,商城网站网络公司一、C枚举的缺陷 1.类型冲突 枚举值和类型都是全局可见的#xff0c; 与正常C的namespace、类等都是格格不入的#xff0c;并且还容易导致冲突。 enum Type { General, Light, Medium, Heavy }; enum Category { General, Pistol, MachineGun, Cannon }; 如果在相同作用域… 一、C枚举的缺陷 1.类型冲突 枚举值和类型都是全局可见的 与正常C的namespace、类等都是格格不入的并且还容易导致冲突。 enum Type { General, Light, Medium, Heavy }; enum Category { General, Pistol, MachineGun, Cannon }; 如果在相同作用域同时能访问到枚举Type和Category则General会冲突。 当然我们可以通过namespace对全局枚举进行分隔。但使用时如果忘记写namespace也还是会报错。 namespace T {enum Type { General, Light, Medium, Heavy }; }namespace {enum Category { General }; }#include iostreamint main() {T::Type t T::Heavy;t General; //error.无法赋值不能将匿名的Category::General赋值给T::Typeif (t General) { //仅对于匿名命名空间可以直接使用General。std::cout equal std::endl;}else {std::cout not equal std::endl;}system(pause);return 0; } 首先对于匿名命名空间或者使用using声明的命名空间可以直接使用枚举值(15,16行的General)否则需要以命名空间::[枚举类型::]枚举值的方式访问。虽然可以访问但是对于不同命名空间的不同枚举只能做比较(因为可以隐式转为int)。但是不能进行赋值操作因为类型和作用域都不相同。 2.可以隐式转换为int 因为C的枚举是基于常量数值设计的所以总是可以被隐式转为int所以在算数运算(没有什么意义)和比较运算时容易出错。(注意无法赋值) 这是因为隐式转换为整型后没有了类型限制则可以随意比较和算数运算。 #include iostream using namespace std; enum Type { General, Light, Medium, Heavy }; //enum Category { General, Pistol, MachineGun, Cannon }; // 无法编译通过重复定义 了General enum Category { Pistol, MachineGun, Cannon }; struct Killer { Killer(Type t, Category c) : type(t), category(c){} Type type; Category category; }; int main() {Killer cool(General, MachineGun);// ...// ...其他很多代码...// ...if (cool.type Pistol)cout It is not a pistol endl;// ...cout is_podType::value endl; // 1cout is_podCategory::value endl; // 1return 0; } // 编译选项:g -stdc11 5-1-2.cpp3.基础类型不定性 C所基于的“基础类型”由编译器决定也就意味着他的符号性和存储空间是不确定的。 #include iostream using namespace std; enum C { C1 1, C2 2}; enum D { D1 1, D2 2, Dbig 0xFFFFFFF0U }; enum E { E1 1, E2 2, Ebig 0xFFFFFFFFFLL}; int main() {cout sizeof(C1) endl; // 4cout Dbig endl; // 编译器输出不同, g4294967280Vs2017:-16cout sizeof(D1) endl; // 4cout sizeof(Dbig) endl; // 4cout Ebig endl; // g:68719476735,vs2017:-1cout sizeof(E1) endl; // 8return 0; } // 编译选项:g 5-1-4.cpp上面可以看到如果够用的话(Dbig)采用4字节存储。不够用的时候会自动扩展为8字节存储(Ebig)且对于Ebig和Dbig而言不同的编译器返回的值不同这是因为符号性不一样导致。 二、强枚举类型 1.语法 enum class/struct [enum-name] [:base-type]{}; 辅助记忆因为叫强枚举-类型所以是enum class 而非 class enum。将class换成struct并没有任何影响enum-name后可以接基础类型表示该枚举类型基于此基础类型创建(除wchar_t的其他任意类型)。 2.优点 强作用域枚举值对于父作用域不直接可见需要通过作用域访问不能隐式转换为int而需要显示转换可以指定基础类型以此确定存储空间和符号性。这样我们可以在明确不需要太大空间时指定较小尺寸的类型(如char)节省空间 可以看到基本上就是为了解决C枚举的三个缺陷而设计的。 3.其他 强枚举类型也是可以匿名的但是由于其枚举成员需要通过作用域访问因此匿名强枚举类型可能无法访问成员当然也可以使用decltype获取类型。 三、对原有枚举类型的扩展 对于C枚举默认依旧由编译器实现基础类型但是C11允许其和强枚举类型一样指定基础类型。 enum Type: char { General, Light, Medium, Heavy }; 其次在C11中枚举成员的名字除了会自动输出到父作用域也可以在枚举类型定义的作用域内有效。 enum Type { General, Light, Medium, Heavy }; Type t1 General; Type t2 Type::General;
http://wiki.neutronadmin.com/news/283594/

相关文章:

  • 网站前台功能模块设计网站管理系统 手机
  • 做网站如何使用数据库可以加速网页的加速器
  • 保定网站建设苗木wordpress 生成 app
  • 大连商城网站制作网站商务通登陆不上
  • wordpress视频站模板网站服务器上线后要怎么做
  • 网站托管费做网络调查的网站赚钱
  • 丹阳高铁站对面的规划做进口产品的网站
  • cms网站搭建好了再怎么做网络广告类型
  • 网站页面html静态化哪个网站可以卖自己做的模型
  • 北京做网站建设的公司哪家好北京做网站报价
  • 软件开发模型的v模型图成都百度推广和seo优化
  • 网站建设的背景有哪些asp最新版本
  • 在线模版下载网站短视频营销的特点
  • wordpress 导入数据seo快速优化软件网站
  • 响应式网站适合用什么框架做网页制作教程赵丰年
  • 国内做优秀的农业信息网站自己做影视网站怎么找代理商
  • 网站开发的常见编程语言有哪些合肥网站建设设计外包
  • 企业对网站建设的发展如何制作个人网页兼职主页
  • 江苏首天建设集团网站程序外包平台
  • 企业网站怎么收录网站开发与网站制作
  • 云南大永高速公路建设指挥部网站上海网站制作科技公司
  • 做网站最重要的是什么注册安全工程师
  • 泰州市做网站连云港网站开发公司
  • 商城顺德网站建设网站服务器模式
  • 浙江人工智能建站系统软件运城seo招聘
  • 软件通网站建设ios 常用网站
  • 企业网站建设的建议对于网站建设的调查问卷
  • 用网站做自我介绍ppt大连建站系统模板
  • 莒县网站建设建行商城网站
  • 常州模板网站建设价位浙江门户网站建设公司