|
Программирование >> Перегруженные имена функций и идентификаторы
Друзья (friends) Другом класса является функция не-член, которая может использовать имена закрытых членов. Следующий пример иллюстрирует различия между членами и друзьями: class private int a; friend void friend set (private*,int); public: void member set (int); void friend set (private* p,int i) { p->a=i; } void private.member set (int i) { a = i; } private obj; friend set (&obj,10); obj.member set (10); Если описание friend относится к перегруженному имени или операции, то другом становится только функция с описанными типами параметров. Все функции класса cl1 могут быть сделаны друзьями класса cl2 с помощью одного описания class cl2 friend cl1; Функция-операция Большинство операций могут быть перегружены с тем, чтобы они могли получать в качестве операндов объекты класса. имя функции операции: operator op Где op: & < > /= %= &= << >> <<= >>= <= >= && () [] Последние две операции - это вызов функции и индексирование. Функция операция может или быть функцией членом, или получать по меньшей мере один параметр класса. Структуры Структура есть класс, все члены которого общие. Это значит, что: struct s { ... }; эквивалентно class s { public: ... }; Структура может иметь функции члены (включая конструкторы и деструкторы). Объединения Объединение можно считать структурой, все объекты чены которой начинаются со смещения 0, и размер которой достаточен для содержания любого из ее объектов членов. В каждый момент времени в объединении может храниться не больше одного из объектов членов. Объединение может иметь функции члены (включая конструкторы и деструкторы). Поля бит Описатель члена вида: идентификатор opt: константное выражение определяет поле; его длина отделяется от имени поля двоеточием. Поля упаковываются в машинные целые; они не являются альтернативой слов. Поле, не влезающее в оставшееся в целом место, помещается в следующее слово. Поле не может быть шире слова. На некоторых машинах они размещаются справа налево, а на некоторых слева направо. Неименованные поля полезны при заполнении для согласования внешне предписанных размещений (форматов). В особых случаях неименованные поля длины 0 задают выравнивание следующего поля по границе слова. Не требуется аппаратной поддержки любых полей, кроме целых. Более того, даже целые поля могут рассматриваться как unsigned.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |