Class Next

{

public:

char* string;

Next(char * cp){string = cp;}

};

 

class Last:public Next

{

int val; char name[30];

public:

Last(int d);

};

// виклик базового класу з нульовою вказівкою

Last::Last(int d):Next((char *) 0)

{

sprintf(name, "%d", d);

//ініціалізуєтся змінна базового класу

string = name;

val = d;

}

При створенні екземпляра класу викликається його конструктор. Якщо клас є похідним, то повинен бути викликаний конструктор базового класу. Спочатку будується базовий клас, потім похідний.

Якщо базовий клас є похідним, то процес повторюється доти, поки не буде досягнутий кореневий клас. Дерево спадкування, наведене на рис. 3.1, ілюструє це:

Рис. 3.1 Дерево спадкування

 

class First {...};

class Second: public First {... };

class: Third: public Second {... };

 

При створенні екземпляра класу Third конструктори викликаються в такому порядку:

 

First:: First();

Second:: Second();

Third:: Third();

 

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

 

Third:: ~Third();

Second:: ~Second();

First:: ~First();

 

У С++ класи розробляються для досягнення визначених цілей. Частіше усього програміст починає з нечітко обкресленої ідеї, що поступово в міру дозрівання проекту поповнюється деталями. Іноді справа закінчується двома класами, схожими один на одного. Щоб не дублювати коди в класах варто розбити їх на дві частини, помістивши загальну в батьківський клас, а ту, що відрізняється помістити в похідний.

Приклад двох класів, що мають загальні параметри:

 

#include <iostream>

using namespace std;

 








Дата добавления: 2014-12-26; просмотров: 637;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.008 сек.