两种不可移植的特性: 位域和 volatile

1. 位域 ( bit-field )

类可以将其( 非静态) 数据成员定义成位域 , 在一个位域中含有一定数量的二进制位。

  • 位域的类型必须是整型或枚举类型
  • 位域在内存中的布局是与机器相关的
typedef unsigned int Bit;
class File {Bit mode: 2;Bit modified: 1;Bit prot_owner: 3;Bit prot_group: 3;Bit prot_world: 3;
public:enum modes {READ = 01, WRITE = 02, EXECUTE = 03};File &open(modes);void close();void write();bool isRead() const;void setWrite();
}// 使用位域
void File::write() {modified = 1;// ...
}void File::close() {if( modified)// ...保存内容
}File &File::open(File::modes m) {mode |= READ;   // 按默认方式设置READ// 其他处理if(m & WRITE)   // 如果打开了READ和WRITE// 按照读/写方式打开文件return *this;
}

C++ Primer 5th笔记(chap 19 特殊工具与技术)两种不可移植的特性之“位域”相关推荐

  1. C++ Primer 5th笔记(chap 19 特殊工具与技术)异常类层次

    1. 类 exception . bad_cast 和 bad_alloc 定 义 了 默 认 构 造 函 数 runtime_error 和 logic_error没有默认构造函数, 但是有一个可以 ...

  2. C++ Primer 5th笔记(chap 19 特殊工具与技术)typeid运算符

    1. typeid运算符(typeid operator) 它允许程序向表达式提问:你的对象是什么类型? typeid表达式的形式是typeid(e),其中e可以是任意表达式或类型的名字,它操作的结果 ...

  3. C++ Primer 5th笔记(chap 19 特殊工具与技术)运行时类型识別RTTI

    1. 运行时类型识别(run-time type identification ) 当我们将这两个运算符用于某种类型的指针或引用, 并且该类型含有虚函数时, 运算符将 使用指针或引用所绑定对象的动态类 ...

  4. C++ Primer 5th笔记(chap 19 特殊工具与技术)type_info 类

    1. type_info 的操作 操作 描述 t1 == t2 如果type_info对象t1和t2表示同一种类型,则返回true t1 != t2 如果type_info对象t1和t2表示不同的类型 ...

  5. C++ Primer 5th笔记(chap 19 特殊工具与技术)typeid

    1. 通常情况下使用 typeid 比较两条表达式的类型是否相同或者比较一条表达式的类型是否与指定的类型相同 Derived *dp = new Derived; Base *bp = dp; // ...

  6. C++ Primer 5th笔记(chap 19 特殊工具与技术)使用 RTTI

    1. RTTI用处 当想为具有继承关系的类实现相等运算符时.对于两个对象来说,如果他们的类型相同并且对应的数据成员取值相同,则我们说这两个类是相等的. class Base {friend bool ...

  7. C++ Primer 5th笔记(chap 19 特殊工具与技术)定位 new 表达式

    1. 定位 new (placement new) 1.1 起因 内存分配和初始化分离开 Placement new allows you to construct an object in memo ...

  8. C++ Primer 5th笔记(chap 19 特殊工具与技术)malloc 函数与 free 函数

    void *operator new (size_t size) {if (void *mem = malloc (size) )return mem;elsethrow bad_alloc ( ); ...

  9. C++ Primer 5th笔记(chap 19 特殊工具与技术)控制内存分配

    1. new void operator new (size_t, void ) ;//不允许重新定义这个版本 string *sp = new string("a value") ...

最新文章

  1. golang执行linux命令
  2. Java集合:HashMap线程不安全?有哪些表现?
  3. matlab读取txt数据绘图(python命令行传参)
  4. 红帽7 -本地yum配置
  5. jquey-整屏滚动的制作过程
  6. 自用的获取时间 传值是获取剩余时间 不传是获取当前时间
  7. Node rabbitmq 入门就够了
  8. 【回归预测】基于matlab麻雀算法优化LSSVM回归预测【含Matlab源码 1128期】
  9. VB.NET/C# Free Grid Control 免费开源表格控件 - ReoGrid 介绍(1)
  10. Win9X、2000、XP、2003所有注册表设置
  11. js 生成二维码及打印
  12. 《东周列国志》第五十三回 楚庄王纳谏复陈 晋景公出师救郑
  13. 防火墙NAT映射-端口映射-从零开始学RouterOS系列05
  14. MAC上VMware fusion 12安装vmware tools灰色解决办法
  15. TCP/IP传输层协议实现 - TCP的坚持定时器(lwip)
  16. Oracle EBS R12关于“PO 通信输出”相关问题处理
  17. Web基础-JSON和AJAX
  18. 对称加密 非对称加密
  19. 测评您的大数据薪资水平
  20. 房贷中的等额本息和等额本金有什么区别?

热门文章

  1. Android 面试 - 有关Service的面试题
  2. Android --- 怎么去掉小数后面不必要的 0
  3. Module not found: Error: Can't resolve 'less-loader' in 'E:\NodeDemo\vue_assistant_lsp'
  4. oracle命令格式,OraCmD(Oracle命令行工具) V3.1 官方版
  5. 数据中心(机房)监控方案
  6. 高低压配电系统基础知识,都是非常全面的分享!
  7. 快速学python爬虫_Python爬虫丨应当如何快速高效学习
  8. NLP:Transformer的架构详解之详细攻略(持续更新)
  9. Python语言学习之字母A开头函数使用集锦:assert用法之详细攻略
  10. DL框架之TensorFlow:深度学习框架TensorFlow Core(低级别TensorFlow API)的简介、安装、使用方法之详细攻略