Программирование >>  Перегруженные имена функций и идентификаторы 

1 ... 42 43 44 [ 45 ] 46 47 48 ... 210


Друзья (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.



1 ... 42 43 44 [ 45 ] 46 47 48 ... 210

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика