Класи в C + + h2>
Однією з основних рис C + +, якої немає в С, є
концепція класів. По суті, класи - найважливіше поняття в C + +. Класи
схожі на структури мови С. Однак структура З визначає тільки дані,
асоційовані з цією структурою. Ось приклад структури С: p>
struct CIRCLE p>
( p>
int radius; p>
int color; p>
(; p>
Після того, як ви оголосили структуру, ви можете
використовувати її в межах вашої функції main (), як показано нижче: p>
void main () p>
CIRCLE MyCircle; p>
... p>
... p>
MyCircle.radius =
18; p>
MyCircle.color = 255;// 255 задає колір p>
... p>
... p>
) p>
Зі структурою MyCircle (що представляє окружність)
асоціюються дані radius і color (радіус і колір). Клас в C + +, з іншого
боку, має як асоційовані з ним дані, так і функції. Дані класу
називаються елементами даних, а функції класу - елементами-функціями.
Отже, у програмі, яка використовує класи, можна написати наступний
код: p>
MyCircle.radius =
20; p>
MyCircle.color =
255; p>
MyCircle.DisplayCircle ()
; p>
Перші два оператори присвоюють значення елементів
даних MyCircle radius і color; третій оператор викликає функцію-елемент
DisplayCircle () для виводу кола MyCircle. MyCircle називається об'єктом
класу circle. Ваша програма може оголосити інший об'єкт з ім'ям HerCircle
класу circle наступним чином: p>
CIRCLE HerCircle; p>
Наступні оператори присвоюють значення елементів
даних HerCircle radius і color: p>
HerCircle.radius = 30; p>
HerCircle.color = 0; p>
Потім ви можете використовувати функцію-елемент
DisplayCircie () для виводу кола HerCircle: p>
HerCircle.DisplayCircle (); p>
Оголошення класу h2>
Перед тим як працювати з класом, ваша програма
повинна його оголосити (так само як перед роботою зі структурою mystructure ви
повинні були оголосити її елементи даних). У цьому розділі ви познайомитеся з
синтаксисом оголошення класу. Ви будете і далі практикуватися з класом
circle: p>
class Circle ( p>
public: p>
Circle (); p>
void
SetRadius (void); p>
void
GetRadius (void); p>
~ Circle (); p>
private: p>
void
CalculateArea (void); p>
int radius; p>
int color; p>
); p>
Оголошення класу має наступну будову: p>
class Circle ( p>
... p>
... p>
Тут ви вводите оголошення класу p>
... p>
... p>
); p>
Ключове слово class показує компілятору, що всі
що знаходиться в фігурних дужках (()) належить оголошенню класу. (Не
забувайте ставити крапку з комою в кінці оголошення.) Оголошення класу
містить оголошення елементів даних (наприклад, int radius) і прототипи
функцій-елементів класу. В оголошенні класу circle містяться такі
елементи даних: p>
int radius; p>
int color; p>
Оголошення також містить п'ять прототипів
функцій-елементів: p>
Circle (); p>
void
SetRadius (void); p>
void
GetRadius (void); p>
~ Circle (); p>
void CalculateArea (void); p>
Перший і четвертий прототипи виглядають дивно. Перший
з них є прототипом функції конструктора: p>
Circle (); p>
Ви дізнаєтеся про роль конструктора пізніше в цьому розділі, а
поки запам'ятайте синтаксис, який використовується в C + + для прототипу функції
конструктора. Коли ви записуєте прототип конструктора, ви повинні слідувати
правилами, наведеними нижче: p>
• Кожне оголошення класу має включати прототип
функції конструктора. p>
• Ім'я функції конструктора має збігатися з ім'ям
класу, а після нього повинні слідувати круглі дужки (). Якщо, наприклад, ви
розкажете клас з ім'ям Rectangle, він повинен включати оголошення функції
конструктора класу: Rectangle (). Отже, оголошення класу Rectangle
має виглядати так: p>
class Rectangle p>
( p>
public: p>
Rectangle ();// Конструктор p>
... p>
... p>
private: p>
... p>
... p>
); p>
• Не згадуйте ніякого значення, що повертається для
функції конструктора. (Функція конструктора повинна мати тип void, але не потрібно
це вказувати.) p>
• Функція конструктора повинна розташовуватися під
ключовим словом p>
public. p>
Функція конструктора завжди повертає значення типу
void (незважаючи на те, що ви не вказали його в прототипі). Як ви незабаром
побачите, функція конструктора зазвичай має один або більше число параметрів. p>
Функція деструктора p>
Функція деструктора записується в оголошенні класу
наступним чином: p>
class Circle p>
( p>
public: p>
... p>
... p>
~ Circle ();// Деструктор private: p>
... p>
... p>
); p>
Зверніть увагу на символ тильди (~), який
передує прототипу функції деструктора. (На більшості клавіатур ви можете
знайти символ тильди зліва від клавіші 1.) При записі прототипу функції
деструктора виконуйте наступні правила: p>
• Ім'я функції деструктора має збігатися з ім'ям
класу і йому повинен передувати символ ~. Якщо, наприклад, ви розкажете
клас з ім'ям Rectangle, ім'ям функції деструктора повинно бути ~ Rectangle.
Отже, оголошення класу Rectangle має виглядати наступним чином: p>
class Rectangle p>
( p>
public: p>
Rectangle ();// Конструктор p>
... p>
~ Rectangle ();// Деструктор private: p>
... p>
... p>
); p>
• Не вказуйте ніякого значення, що повертається для
функції деструктора. (Функція деструктора повинна мати тип void, але не потрібно
це вказувати.) p>
• Функція деструктора не має ніяких параметрів. p>
Ключові слова public й private h2>
Прототипи функцій і оголошення елементів даних
включаються в оголошенні класу в розділи public (відкрите) або private
(закритий). Ключові слова public й private говорять компілятору про доступність
елементів-функцій і даних. Наприклад, функція SetRadius () визначена в розділі
public, і це означає, що будь-яка функція програми може викликати функцію
SetRadius (). Функція CalculateArea () визначена в розділі private, і цю
функцію можна викликати тільки в коді функцій-елементів класу Circle. p>
Аналогічно, оскільки елемент даних radius оголошений в
розділі private, прямий доступ до нього (для встановлення або читання його значення)
можливий тільки в коді функцій-елементів класу Circle. Якщо б ви оголосили
елемент даних radius в розділі public, то будь-яка функція програми мала б
доступ (для читання і присвоювання) до елементу даних radius. p>
Перевантажені функції h2>
У C + + (але не в С) ви можете використовувати одне і те ж ім'я
для декількох функцій. Наприклад, ви можете оголосити дві функції з ім'ям
SetRadius () в оголошенні класу CCircle. Такі функції називаються
перевантаженими функціями. p>
Список літератури h2>
Для підготовки даної роботи були використані
матеріали з сайту http://www.realcoding.net
p>