Програмування С, С++теорія та практика (частина 2)
2.12 Вкладені класи.
Бувають ситуації, коли при оголошенні одного класу в середині його оголошення можуть бути оголошені інші класи. У таких випадках такі класи називають вкладеними класами (пезґеС сіаззез), а клас, що їх об'єднує - клас з об'єктною ідентичністю (оЬ]есґ ісіепґіґу). Наведемо гіпотетичний приклад, що описує вкладеність класу Мезґей у класі С.
#іпсіигіе<іозЬгеат.Ь> сіазз С {
сіазз Нез'Ьегі.
{
іпЬ мЬо; риЬііс:
^зЬегі(іпЬ а) ;
~№зЬей^оій) ;
} ;
риЬііс:
С(іпЬ Ь)
{
^зЬегі (Ь*Ь) ; соиЬ<<"СопзЬгисЬог С\п";
}
~С (тоіЛ)
{
соиЬ<<"БезЬгисЬог С\п";
}
С:^езЬегі:^езЬегі(іпЬ а)
{
мЬо=а;
соиЬ<<"СопзЬгисЬог о£ ^зЬегі сіазз \п" ;
}
С: ^езЬегі: :~^зЬегі^оігі)
{
соиЬ<<"БезЬгисЬог о£ ^зЬегі сіазз\п";
}
іпЬ таіп(іпЬ агдс, сЬаг* а^дV[])
{
С оЬ^есЬ (3) ; геЬигп 0;
В результаті роботи даної програми ми отримаємо:
СопзЬгисЬог о£ ^зЬегі. сіазз БезЬгисЬог о£ ^зЬегі сіазз СопзЬгисЬог С БезЬгисЬог С
Складно відразу визначити, в яких ситуаціях класи краще реалізувати якраз за рахунок вкладення. Так, даний підхід широко застосовується у широковідомій технології об'єктів СОМ (Сошропепґ ОЬ]есґ Мойеї), основна з цілей якої полягає у відокремленні інтерфейсу класу від його реалізації.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
