我写了如下代码:
class one_bit{
unsigned char b:1;
public:
one_bit():b(0){}
one_bit(int x):b(x&1){}
one_bit(unsigned int x):b(x&1){}
one_bit(long x):b(x&1){}
one_bit(unsigned long x):b(x&1){}
one_bit(char x):b(x&1){}
one_bit(unsigned char x):b(x&1){}
one_bit(long long x):b(x&1){}
one_bit(unsigned long long x):b(x&1){}
one_bit(one_bit& b2){
b=b2.b;
}
one_bit(one_bit&& b2){
b=b2.b;
}
template<typename T>
one_bit(T x):b(x%2){}
one_bit operator= (one_bit b2){
b=b2.b;
return *this;
}
operator int()const{return int(b);}
operator unsigned int()const{return (unsigned int)(b);}
operator char()const{return char(b);}
operator unsigned char()const{return (unsigned char)(b);}
operator long()const{return long(b);}
operator unsigned long()const{return (unsigned long)(b);}
operator long long()const{return (long long)(b);}
operator unsigned long long()const{return (unsigned long long)(b);}
}bits[8];
我期望bits数组总大小我1字节,即8个1位的位域,但实际情况是每个one_bit对象每个一个字节,谁给我把他们放到一个字节里