Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 583
от 15.11.2006, 15:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 423, Экспертов: 50
В номере:Вопросов: 2, Ответов: 5


Вопрос № 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное