В структурах C, можно указать другую битовую длину, чем битном по умолчанию длина типа, как это в:Можно ли использовать битовые поля в классах C++?
struct MyStruct{
int myVar : 1; //Size of myVar is 1 bit (so it can take values 0 or 1
int myOtherVar: 4; //Size of myOtherVar is 4 bits (so it can take values 0 to 15)
}
Это называется битовыми полями.
Мой вопрос, если это возможно сделать это в C++ классов, например:
class MyClass{
public:
//Some methods
private:
int m_myAttribute : 1;
int m_myOtherAttribute : 4;
}
Я искал в Интернете для этого, но все примеры, которые я нашел битовых полей, используемых Структуры, а не классы.
Я протестировал этот код и скомпилировал его просто отлично, но я хотел бы знать, действительно ли размер атрибутов заданного размера или компилятор просто проигнорировал битные поля и использовал стандартный размер int
.
Это не ответит на ваш вопрос, но может быть уместным: http://stackoverflow.com/questions/3319717/is-there-a-bit-equivalent-of-sizeof-in-c –
Вы можете проверить его на 'sizeof() '. Кроме того, насколько я знаю, единственная разница между структурами и классами - переменная класса по умолчанию будет ** private **, переменная struct по умолчанию будет ** общедоступной **. Вы должны прочитать здесь: [http://stackoverflow.com/a/7762179/1867076] – Prometheus
Классы на C++ идентичны структурам почти во всех отношениях. Разница ** ** ** - это спецификатор доступа по умолчанию (для классов - private, для structs - public) –