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

Posted thefist11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Primer 5th笔记(chap 19 特殊工具与技术)两种不可移植的特性之“位域”相关的知识,希望对你有一定的参考价值。

两种不可移植的特性: 位域和 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 特殊工具与技术)两种不可移植的特性之“位域”的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

C++ Primer 5th笔记(chap 19 特殊工具与技术)成员函数指针