Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


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




ƒружественные функции, хот€ и не принадлежат какому-то классу, однако имеют доступ ко всем приватным и защищенным членам данных внешних классов. Ћистинг 3.12 обобщает синтаксис объ€влени€ дружественных функций с помощью ключевого слова friend перед указанием возвращаемого типа.

class className

(1

public: ~

className(); //  онструктор по умолчанию // ƒругие конструкторы friend returnType friendFunction(<список параметров>);

};

Ћистинг 3.12. ќбъ€вление дружественных функций.

≈сли обычные функции-члены имеют автоматический доступ ко всем данным своего класса за счет передачи скрытого параметра - указател€ this на экземпл€р класса, то дружественные функции требуют €вной спецификации этого параметра. ƒействительно, объ€вленна€ в классе ’ дружественна€ функци€ F не принадлежит этому классу, а, значит, не может быть вызвана операторами х. F и xptr->F (где х- экземпл€р класса X, a xptr- его указатель). —интаксически корректными будут обращени€ F (& х) или F (xpt r).

“аким образом, дружественные функции могут решать задачи, реализаци€ которых посредством функций-членов класса оказываетс€ неудобной, затруднительной и даже невозможной.

3.6 Ќовые возможности €зыка C++

C++Builder обеспечивает не только поддержку последних нововведении стандарта ANSI C++, но и расшир€ет €зык новыми возможност€ми.  омпоненты, свойства, методы, обработчики событии, а также шаблоны, пространства имен, €вные и непосто€нные объ€влени€, RTTI и исключени€ - вс€ мощь этих средств доступна программистам, использующим C++Builder дл€ визуальной разработки приложений.

¬ажно пон€ть, что расширени€ €зыка никогда не €вл€ютс€ самоцелью, и вы по-прежнему сможете компилировать тексты, написанные в рамках стандартного C++. ќднако, чтобы воспользоватьс€ в полной мере преимуществами, которые предоставл€ет C++Builder дл€ технологии быстрой разработки приложений (RAD), вам придетс€ прин€ть введенные расширени€ €зыка.

Ќекоторые из расширений (например, _ classid) C++Builder резервирует, главным образом, дл€ внутреннего использовани€. ƒругие расширени€ совершенно очевидны (_ int8, _intl6 и т.д.), и здесь не рассматриваютс€. Ќаше внимание будет сфокусировано на наиболее значимых расширени€х C++, которые, в основном, относ€тс€ к компонентным классам и будут посто€нно встречатьс€ как в тексте книги, так и в ваших приложени€х, разрабатываемых в среде C++Builder.

3.6.1  омпоненты

 омпоненты часто достигают более высокой степени инкапсул€ции, нежели стандартные C++ классы. ѕроиллюстрируем это на простом примере разработки диалога, содержащего кнопку. ¬ типичной C++ программе дл€ Windows нажатие мышью на кнопку приводит к генерации сообщени€ WM_LBUTTONDOWN. Ёто сообщение должно быть "поймано" программой либо в операторе switch, либо в соответствующей строке таблицы откликов (RESPONSE_TABLE), а затем передано процедуре реакции на это сообщение. “ак, приложение, написанное в рамках OWL (Object Windows Library), использует макрос

DEFINE_RESPONSE_TABLE1(TEventTestDlgClient, TDialog)

//({TEventTestDlgClientRSP_TBL_BEGIN}}

EV_BN_CLICKED(IDEVENTBUTTON, EventBNClicked),

//({TEventTestDlgClientRSP_TBL_END}}

END_RESPONSE_TABLE;

чтобы ассоциировать событие (сообщение WM_LBUTTONDOWN), генерируемое кнопкой IDEVENTBUTTON в диалоге TEventTestDlgClient, с функцией реакции EventBNClicked.

C++Builder покончил с этими трудно осваиваемыми программистскими трюками.  омпонента кнопки уже запрограммирована так, чтобы реагировать на нажатие кнопки событием OnClick. ¬се, что надо сделать - это выбрать готовый (или написать собственный) метод и с помощью »нспектора объектов включить его в обработчик данного событи€.





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2015-10-01; ћы поможем в написании ваших работ!; просмотров: 348 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

¬ы никогда не пересечете океан, если не наберетесь мужества потер€ть берег из виду. © ’ристофор  олумб
==> читать все изречени€...

1327 - | 1249 -


© 2015-2024 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.009 с.