Вперед до об’єктно-орієнтованого програмування

Обєкт(Object) це, насправді, просто химерна назва структури (struct) Важлива особливість полягає в тому, що обєкт, крім даних, може містити функції Ось приклад буфера, але з двомафункціями-членами (Member functions), які також називають методами (methods)

struct Buffer { char *_begin char *_end

char _data[256]

Buffer() { _begin = _data _end = _data }

void Insert (char a) { *_end++ = a }

char Remove () {return *_begin++ }

}

Ви використовуєте ці функції-члени абсолютно так само, як і інші члени структури, застосовуючи оператори -> і (Точка) Наприклад:

Buffer myBuff

myBuffInsert(&quota&quot)

Buffer *pBuff = new Buffer

pBuff-&gtInsert (&quotb&quot)

І знову повторю: С + + дозволяє вам оголошувати нові змінні в будь-якому місці, а не тільки на початку блоку Це робить багато програм більш зрозумілими

для сприйняття, так як ви можете визначати нові змінні в безпосередній близькості від місця їх використання B Зокрема, ви можете оголосити нову змінну в ініціалізацій частини оператора for:

for (int i = 0 i <10; i + +) {/ / Додаємо 10 символів "а". myBuff.Insert ("a");

}

Якщо у вас вже є структура Stack, яка має функцію-член Insert (),

ви можете викликати її таким же способом:

Buffer myBuff Stack myStack

myBuffInsert (a) / / Вставляємо а в буфер

myStackInsert (a) / / Вставляємо а в стек

Можливість повторного використання одного і того ж імені, тобтополіморфізм(Polymorphism), рятує при розробці великих програм Наприклад, в моєму аудіоінструментаріі майже кожен обєкт має функцію-член GetSamples Так як в кожному з них вона переслідує одну і ту ж мету, набагато зручніше повторно застосувати те ж саме імя, ніж постійно піклуватися про вигадуванні нових

C + + дозволяє повторно використовувати імена та іншим важливим способом Навіть всередині однієї структури ви можете мати більше одного методу з одним і тим же імям Наприклад, якщо ви хочете розмістити символьні рядка в буфері, слід визначити і Insert (char a), і Insert (char * а) Використовуючи ці визначення, ви могли б написати myBuffInsert (а) або myBuffInsert (abcdef), а компілятор перевірив би типи аргументів і викликав би відповідну функцію Можливістьперевантаження (overload)імені функції застосовна і до звичайних функцій, не тільки до функцій-членам

Здатність C + + вибирати потрібну функцію відповідно до типом аргументу це одна із складових частин загальної концепції всієї мови безпечного типизированного(type-safe)  програмування Одним із прикладів даного відмінності між C і C + + є трактування (безтипових) покажчика * void Обидві мови дозволяють привласнювати значення будь-якого покажчика змінної типу * Void Однак C також дозволяє вам вільно привласнювати покажчик void * будь-якого іншого вказівного типу, в той час як C + + вимагає, щоб ви використовували явне приведення типів C + + також перевіряє типи аргументів функції і значення, що повертається (навіть при передачі одними файлами іншим) і накладає ряд інших обмежень, покликаних допомогти вам уникнути деяких поширених програмних помилок

Джерело: Кінтцель Т Керівництво програміста по роботі зі звуком = A Programmers Guide to Sound: Пер з англ М: ДМК Пресс, 2000 432 с, іл (Серія «Для програмістів»)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*