C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 105 - Виртуальные функции, продолжение / MSDN rus / Visual C++

Шаг 105 - Виртуальные функции, продолжение

Продолжим изучение наших виртуальных функций. Первый вопрос, а можно ли вызывать виртуальную функцию предка в переопределенной функции. Можно. Вот пример.

class Test2 : public Test1
{
public:
	void include();
};

void Test2::include()
{
	Test1::include(); 	// метод предка.
	cout << "Test2"  << endl;
}

void main()
{
	Test2 t;
	t.print(); 
}

Результат будет такой. Метод предка вызовется.

Start Print
Test1
Test2
Cansel Print
Press any key to continue

А если еще раз унаследовать ? Вообщем то без разницы хоть сто раз. Вы сможете переопределить эту функцию или использовать метод любого предка.

......

class Test3 : public Test2
{
public:
	void include();
};

void Test3::include()
{
	Test1::include();		// самый первый
	Test2::include();		// второй
	cout << "Test3" << endl;	// новый
}

void main()
{
	Test3 t;
	t.print(); 
}

Теперь вот так они вызываются.

Start Print
Test1
Test1
Test2
Test3
Cansel Print
Press any key to continue

Обратите внимание на то, что слово virtual нужно указать только один раз, при дальнейшем наследовании классы знают, что есть такое слово и функция может быть переопределяемая. Можете воспринимать это слово virtual как указатель на множество функций. Вы можете свой указатель добавить определи новый класс. И имея этот указатель вызывать нужную функцию.

105_1.gif (1673 b)


| |
Автор Каев Артем.
[AD]