# std::bitset<N>::reference

< cpp‎ | utility‎ | bitset

class reference; |  |

std::bitset 类包含 std::bitset::reference 作为可公开访问的嵌套类。此类用作允许用户与 bitset 的单个位交互的代理对象，因为标准 C++ 类型（如引用和指针）没有内建指定单个位的足够精度。

std::bitset::reference 的基本用途是提供能从 `operator[]` 返回的左值。

任何通过 std::bitset::reference 对 bitset 的读或写潜在地读或写整个底层 bitset 。

### 成员函数

(构造函数) | 构造引用。只对 std::bitset 自身可访问 (私有成员函数)
(析构函数) | 销毁引用 (公开成员函数)
operator= | 赋值 bool 给被引用位 (公开成员函数)
operator bool | 返回被引用位 (公开成员函数)
operator~ | 返回翻转的被引用位 (公开成员函数)
flip | 翻转被引用位 (公开成员函数)

## std::bitset<N>::reference::~reference

~reference(); |  |

销毁引用。

## std::bitset<N>::reference::operator=

| (1) |
reference& operator=( bool x ); |  | (C++11 前)
reference& operator=( bool x ) noexcept; |  | (C++11 起)
| (2) |
reference& operator=( const reference& x ); |  | (C++11 前)
reference& operator=( const reference& x ) noexcept; |  | (C++11 起)

赋值给被引用位。

### 参数

x | - | 要赋值的值

### 返回值

*this

## std::bitset<N>::reference::operator bool

operator bool() const; |  | (C++11 前)
operator bool() const noexcept; |  | (C++11 起)

返回被引用位的值。

### 参数

（无）

### 返回值

被引用位。

## std::bitset<N>::reference::operator~

bool operator~() const; |  | (C++11 前)
bool operator~() const noexcept; |  | (C++11 起)

返回被引用位的翻转。

### 参数

（无）

### 返回值

被引用位的翻转。

## std::bitset<N>::reference::flip

reference& flip(); |  | (C++11 前)
reference& flip() noexcept; |  | (C++11 起)

翻转被引用位。

### 参数

（无）

### 返回值

*this

### 示例

    #include <bitset>
    #include <iostream>

    int main()
    {
        std::bitset<4> bs( 0b1110 );

        std::bitset<4>::reference ref = bs[2]; // auto ref = bs[2];

        auto info = [&](int n) {
            std::cout << n << ") bs: " << bs << "; ref bit: " << ref << '\n';
        };

        info(1);
        ref = false;
        info(2);
        ref = true;
        info(3);
        ref.flip();
        info(4);
        ref = bs[1]; // operator=( const reference& x )
        info(5);

        std::cout << "6) ~ref bit: " << ~ref << '\n';
    }

输出：

    1) bs: 1110; ref bit: 1
    2) bs: 1010; ref bit: 0
    3) bs: 1110; ref bit: 1
    4) bs: 1010; ref bit: 0
    5) bs: 1110; ref bit: 1
    6) ~ref bit: 0

### 参阅

operator[] | 访问指定的位 (公开成员函数)