Вопрос № 61980: Здравствуйте, господа эксперты.
Прошу вас, покажите как правельно объявить виртуальную функцию в C++.
Заранее благодарю.
..Вопрос № 62080: Есть массив объектов A[10000]. Есть массив B[10000], такой же как и A. Надо скопировать (а лучше ПЕРЕМЕСТИТЬ) содержимое B в A.
Прямым присваиванием делать это ДОЛГО, надо както побыстрее.
..
Вопрос № 61.980
Здравствуйте, господа эксперты.
Прошу вас, покажите как правельно объявить виртуальную функцию в C++.
Заранее благодарю.
Отправлен: 09.11.2006, 20:17
Вопрос задал: Pashokq (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Алексеев В.В.
Здравствуйте, Pashokq!
в описании базового класса пишется следующее:
class <class_name>
{
//описание класса
virtual <return_type> <func_name>(<args>);
...
}
где <return_type> - тип возвращаемого значения,
<func_name> - имя функции,
<args> - аргументы.
Написание слова virtual в производных классах - необязательно.
В определении класса слово virtual не используется:
<return_type> <class_name>::<func_name>(<args>)
{
//код самой функции
}
При объявлении хотя бы одной функции виртуальной необходимо объявить виртуальным и деструктор.
Ответ отправил: Алексеев В.В. (статус: 1-ый класс)
Ответ отправлен: 09.11.2006, 22:44 Оценка за ответ: 5
Отвечает: Bob Johnson
Здравствуйте, Pashokq!
непонятна связь между виртуальными функциями и деструктором - виртуальным делают деструктор тогда, когда класс-потомок уничтожают через указатель на родительский класс, например:
class A
{
};
class B : public A
{
};
void main ()
{
A *a = new B;
delete a;
}
если не сделать деструктор виртуальным в данном случае, то при выполнении delete a компилятор будет думать, что удаляет класс типа А, а на самом-то деле у нас указатель на класс типа В, у которого могут быть свои дополнительные особенности уничтожения.
исходя из этого правила деструктор лучше делать всегда виртуальным :)
Ответ отправил: Bob Johnson (статус: Академик) Россия, Калуга WWW:Программирование ---- Ответ отправлен: 10.11.2006, 00:36
Отвечает: Lonely Wolf
Здравствуйте, Pashokq!
Виртуальная функция - метод базового класса, для создания полиморфного объекта. В описании класса объявляется виртуальная функция( virtual void virtual_metod(char*some_param))
Приложение:
--------- Ассемблер FOREVER!!!
Ответ отправил: Lonely Wolf (статус: Студент)
Ответ отправлен: 10.11.2006, 11:03
Вопрос № 62.080
Есть массив объектов A[10000]. Есть массив B[10000], такой же как и A. Надо скопировать (а лучше ПЕРЕМЕСТИТЬ) содержимое B в A.
Прямым присваиванием делать это ДОЛГО, надо както побыстрее.
Приложение:
Отправлен: 10.11.2006, 15:12
Вопрос задал: NiGHT (статус: Студент)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 6)
Отвечает: Jadd
Здравствуйте, NiGHT!
memcpy(void* dest, const void* src, size_t count) - копирование одной области памяти в другую. Размер count указывается в байтах.
memmove(void* dest, conts void* src, size_t count) - перемещение одного буфера (области памяти) в другой.
Успехов.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Профессионал) Адрес: Санкт-Петербург WWW:http://www.sport-diary.ru ICQ: 28260749 ---- Ответ отправлен: 10.11.2006, 15:23 Оценка за ответ: 5
Отвечает: yatagan
Здравствуйте, NiGHT!
#include <string.h>
void *memcpy(void *s1, const void *s2, size_t n);
http://www.mkssoftware.com/docs/man3/memcpy.3.asp
--------- Україна понад усе!
Ответ отправил: yatagan (статус: 4-ый класс)
Ответ отправлен: 13.11.2006, 10:42