Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Дружественные функции




Динамическое распределение памятью

В С++ для динамического распределения памяти используется унарный оператор new.

Указатель на тип = new имя (инициализатор).

Оператор NEW создает в памяти объект, тип в которой определяется операнд, и возвращает указатель на этот объект.

Int * ip=new int

Это объявление создаст неинициализированный объект целого типа

Int * ip=new int (3)

Освободить память распределенную операцию NEW можно с помощью оператора DELETE IP

Память, полученная оператором NEW будет распределена до тех пор, пока она явно не будет освобождена оператором DELETE. При выходе из блока локальный указатель, содержащий адрес памяти, полученный оператором NEW уничтожается, а память остается распределенной.

В результате к этой памяти невозможно будет обратиться.

Часто NEW используется для динамического распределения памяти под массив.

Double * mas = new double(3)

Double*a;

Int n =10;

A=new double[3]

Удаление массива

Delete []a;

Ссылки

Чтобы сделать переменную ссылкой, необходимо после описателя типа поставить знак &.

Int i=3;

Int &ir=I;

Ссылка обязательно должна быть инициализирована.

Однажды инициализировать ссылку, ей нельзя присвоить другое значение.

Дружественные функции класса

Дружественность - это свойство, позволяющее отдельным функциям или методам класса использовать защищенное и приватное содержимое указанных классов.

Использование дружественности дает следующие преимущества.

1. Облегчение работы программиста обусловлено избавлением от необходимостей продумывать способы использования закрытого содержимого класса вне этих классов.

2. Уменьшение объема программного кода за счет использования данных классов вместо более записей методов.

3. Временный выигрыш, связанный с тем, что обращение к данным напрямую происходит быстрее чем обращение к ним через методы

Недостатокиспользоания дружественность:

Понижение уровня защищенности объектов от некорректных действий.

Применяются для доступа к скрытым полям класса и представляет собой альтернативу методов.

Правила описания и особенности дружественных функций.

1. Дружественная функция объявляется внутри класса, к элементам которого её нужен доступ с ключевым словом friend, в качестве параметра ей должен передаваться объект или ссылка на объект класса

2. Дружественная функция может быть обычной функцией или методом ранее определенного класса на нее не распространяется действие спецификаторов доступа.

Место объявления её в классе безразлично.

3. Одна функция может быть дружественной сразу же к нескольким классам.

Class A {

Private

Int a;

Friend void (int c)

}

Void func (int c) {

A obj;

Obj a=1;

}

Чтобы свойство дружественность выполнялось, заголовок в дружественной функции в классе должен быть аналогичен её заголовку в программе.

Дружественные классы.

Один класс А может быть объявлен дружественен другому классу Б если заголовок класса А описан внутри класса с префиксом FRIEND, тогда все методы класса А смогут использовать защищенное и приватное содержимое класса Б

Class B {

Private

Int a;

Friend class A;

Pirvate

Int sum();

________________________________________________

Class A {

Void 9 () {

B obj;

Obj a= 1}

};

Операции дружественности несимметрично.

Т.е. если класс А дружественный к классу Б, это не означает что Б дружественен к классу А.

Один класс может быть объявлен дружественным к нескольким классам, для этого его заголовок, надо описать внутри каждого из этих класса. Так же один класс может иметь несколько дружественных ему классов

Статические элементы класса

С помощью идентификатора STATIC можно описать статические поля и методы класса




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 261; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.