gpt4 book ai didi

C++ 为什么 bitvec[0].flip() 有效

转载 作者:行者123 更新时间:2023-11-30 02:10:52 25 4
gpt4 key购买 nike

基于 C++ Primer 第 4 版(即第 105 页),

bitset<32> bitvec;

bitvec[0].flip(); // reverses the first bit.

我的问题是为什么第二行有效?基于

http://www.cplusplus.com/reference/stl/bitset/operator[]/

bool operator[] ( size_t pos ) const;
reference operator[] ( size_t pos );

bitset::flit 如何用于 bool 或 reference?

谢谢

最佳答案

operator[]返回的“reference”不是C++引用,它是一个特殊的代理类,有flip()方法。

伪代码:

class bitset
{
class reference
{
public:
reference& flip()
{
bitset_.flip(pos_);
return *this;
}

reference(bitset& obj)
: bitset_(obj), pos_(pos)
{
}

bitset& bitset_;
size_t pos_;
};

reference operator[](size_t pos)
{
return reference(*this, pos);
}
}

有关详细信息,请参阅您的 STL 实现的源代码。

关于C++ 为什么 bitvec[0].flip() 有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4263779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com