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

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


Информационный Канал Subscribe.Ru


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

Выпуск № 511
от 23.05.2004, 17:20

Администратор:
Имя: Nick.Box
URL: Информационный ресурс
ICQ: 365124
[censored], [censored]
О рассылке:
Задано вопросов: 1629
Отправлено ответов: 3249
Активность: 199.4 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

vitya
Статус: Профессиональный
Общий рейтинг: 109.19
[Подробней >>]
bocha
Статус: Начальный
Общий рейтинг: 162.5
[Подробней >>]
CrackLab
Статус: Доверительный
Общий рейтинг: 153.12
[Подробней >>]
 
barsik
Статус: Доверительный
Общий рейтинг: 114.81
[Подробней >>]
Fess
Статус: Доверительный
Общий рейтинг: 123
[Подробней >>]
lipa75
Статус: Доверительный
Общий рейтинг: 102.96
[Подробней >>]
 
Sedric
Статус: Доверительный
Общий рейтинг: 138.63
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 1618. пРивет!! Есть вектор: char *tmp; vector ch; ch.push_back(\'0\'); ch.push_back(\'1\'); ch.push_... (ответов: 5)
Вопрос № 1619. Здравствуйте еще раз! Я уже спрашивал по поводу отличия между классом и структурой, и мне пришло 4 ... (ответов: 7)

Вопросов: 2, ответов: 12


 Вопрос № 1618

пРивет!!
Есть вектор:
char *tmp;
vector ch;
ch.push_back(\'0\');
ch.push_back(\'1\');
ch.push_back(\'2\');
Как ch скопировать в tmp?



Вопрос отправлен: 19.05.2004, 19:56
Отправитель: qh

[Следующий вопрос >>] [Список вопросов]

Отвечает vitya

Приветствую Вас, qh!
все в приложении.

Приложение:

Ответ отправлен: 20.05.2004, 17:54
Отправитель: vitya


Отвечает bocha

Доброе время суток, qh!
в приложении

Приложение:

Ответ отправлен: 20.05.2004, 06:20
Отправитель: bocha


Отвечает CrackLab

Доброе время суток, qh!
Например так:
char *tmp = new char;
vector ch;
ch.push_back('0');
ch.push_back('1');
ch.push_back('2');
memcpy(tmp, &ch.front(), ch.size());
ch.front() возвращает ссылку на первый элемент вектора, соотвественно &ch.front() возвращает адрес по которому находится адрес первого элемента вектора, что и требует от нас функция memcpy.
PS. Необходимо помнить что перед тем как копировать в tmp, надо чтобы этот указатель указывал на какую-нибудь область памяти. Поэтому выполняется оператор new, который выделяет память и возвращает указатель на выделенную память.

Ответ отправлен: 20.05.2004, 00:38
Отправитель: CrackLab


Отвечает barsik

Приветствую Вас, qh!
videli pamyat
tmp=new char[N];
i po odnomu simvolu iz kopiruy v tmp[i]

Ответ отправлен: 21.05.2004, 11:38
Отправитель: barsik


Отвечает Fess

Добрый день, qh! Может это не моё дело, но по-моему лучше использовать string. Но я не знаю, что делает программа, поэтому воздержусь от коментариев... А присваивать, по-моему, нужно первый (читай нулевой) элемент ch. А потом при присваивании передвигаться на sizeof(vector). Не забудь тип привести.


Ответ отправлен: 21.05.2004, 17:27
Отправитель: Fess


 Вопрос № 1619

Здравствуйте еще раз!
Я уже спрашивал по поводу отличия между классом и структурой, и мне пришло 4 ответа от уважаемых экспертов. Но все они разные :( и я не знаю кому верить
Эксперт Sedric отвечает:
" В структурах хранятся переменные, то есть примитивные типы данных.В С++ структуры тоже имеют конструкторы, но классы полностью реализуют все идеи ООП.
1.Поддерживается инкапсуляция.
2.Классы наследуются
3.Вы можете использовать уже не только переменные, но и функции.
4.Классы могут быть объявлены абстрактными, то есть можно сконструировать интерфейс."
Эксперт Fess отвечает:
" Приветствую Вас, AleX-X! На самом деле различий не так уж и много. Структура, как и класс, может содержать в себе секции private, protected и public, но по умолчанию все переменные и функции относятся к public, тогда как в классах по умолчанию используется private. Структура, в отличии от классов, не может содержать виртуальных функций. Структура не может быть базовой для класса, также она не может быть производной от класса, обратное утверждение также справедливо, Но разрешено наследование(в том числе и множественное) струры от структуры, и, соответственно, класса от класса. Но не советую тебе организовывать огромную иерархию наследования, основанную только на структурах. А вообще Страуструпа почитать не мешало бы... "
Эксперт Vitya отвечает:
"Очень много чем. Тут не напишешь. Все же почитайте книжки."
Эксперт CrackLab отвечает:
"По определению Бьерна Страуструпа (создателя С++) структура - это класс, у которого все члены по умолчанию являются открытыми (public). У класса же все члены по умолчанию являются закрытыми (private). Кажется это единственное отличие."
Кому верить???



Вопрос отправлен: 20.05.2004, 01:36
Отправитель: AleX-X

[Следующий вопрос >>] [Список вопросов]

Отвечает vitya

Приветствую Вас, AleX-X!
Глобально говоря, отличие в правах доступа (default, конечно).
Кроме того UDP может быть только структурой.

Ответ отправлен: 20.05.2004, 17:52
Отправитель: vitya


Отвечает bocha

Доброе время суток, AleX-X!
Естественно Стауструпу. Стуктура в С++ тот же класс, члены которого по умолчаниюоткрыты.
Т.е., если Вы объявити члены до об'явления модификаторов доступа, то в структуре
они будут считаться открытыми, а в классе - закрытыми.
И класс может наследоваться от структуры и структура от класса. Если структура наследует без
модификатора, значит наследует как public, класс - как приват. Другое дело, что так никто не делает.
Посмотри в приложениии. Сгенерировано в VC6 как консольное с поддержкой MFC;
В нем от класса CString производим струкру CStringStruct, которая от CString отличается наличием функции print(),
и отсутствием большинства конструкторов, а т.ж. имеет виртуальный деструктор и виртуальную функцию.
Далее класс наследует структуру, и вносит изменение в поведение функции структуры(печатает в конце перевод строки).
Теперь создавая об'ект класса мы передаем указатель на него в функцию,
принимающую указатель на структуру, но выполняется функция класса.
Так что структура от класса отличается только принятым по умолчанию модификатором доступа к членам.
А вот в С структура - это просто структурированые данные с открытым доступом, никаких функций и наследования там нет,
хотя можно и поизвращаться с интерфейсами структур при помощи указателей на функции.

Приложение:

Ответ отправлен: 20.05.2004, 06:23
Отправитель: bocha


Отвечает CrackLab

Приветствую Вас, AleX-X!
Верить мне =)
Отвечаю по порядку:
2Sedric:
Структуры тоже полностью реализуют идею ООП, поддерживают инкапсуляцию, наследование, функции-члены, абстрактность.
2Fess:
Структура может содержать виртуальные и чистые виртуальные функции. Структура может быть базовой для класса и наследоваться от класса. Если бы уважаемый Fess прочитал бы Страуструпа (которого он и советует почитать) повнимательнее, то он бы не допустил этой ошибки при ответе.
2Vitya:
Как ни странно ни много чем... Различие единственное. И сюда заходят ни чтобы им указали читать книги, а чтобы ответили на вопрос.
Если со мной кто-то в чем-то не согласен - загружаем C++ (лучше поновее) и проверяем.
Удачи.

Ответ отправлен: 20.05.2004, 01:51
Отправитель: CrackLab


Отвечает lipa75

Здравствуйте, AleX-X!
Эксперт Fess дал наиболее полный и компетентный ответ.
От себя могу добавить, что структурами пользуюсь с целью собрать данные различных типов в одном объекте не определяя в структуре никаких методов (но часто определяя конструктор с параметрами для инициализации полей структуры в момент объявления переменной типа созданной структуры), а классами для конструирования объектов, обладающих методами.

Ответ отправлен: 20.05.2004, 14:08
Отправитель: lipa75


Отвечает barsik

Приветствую Вас, AleX-X!
dumayu chto vse pravi!!!!!!!!!

Ответ отправлен: 21.05.2004, 11:41
Отправитель: barsik


Отвечает Sedric

Доброе время суток, AleX-X!
В принципе все эксперты ответили правильно

Ответ отправлен: 21.05.2004, 13:41
Отправитель: Sedric


Отвечает Fess

Здравствуйте, AleX-X! Мне. Но всё в нашем мире относительно. Я перечислил некоторые сходства и различия между классом и структурой, кто-то скажет, что эти различия существенны, кто-то этого не скажет. Но истина остается истиной, и она в том, что МОЖНО считать структуру облегченным классом, учитывая некоторые ньюансы, и использовать в соответствии с этим утверждением без ущерба логике и семантике программы. Например, структуры используются для совместимости, ведь они имеют идентичные реализации в разных компиляторах С++. На это опирались программисты, проектировавшие СОМ (что-то типа typedef struct interface). Adios!


Ответ отправлен: 21.05.2004, 17:28
Отправитель: Fess



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (24)
C / C++ (15)
Perl (2)
Builder / Delphi (15)
Pascal (20)
Basic / VBA (2)
Java / JavaScript (4)
PHP (12)
Криптография (5)
WinAPI (7)
Радиоэлектроника (6)
Пользователю
Windows 95/98/Me (35)
Windows NT/2000/XP (47)
"Железо" (29)
Поиск информации (16)
Администратору
Windows NT/2000/XP (24)
Linux / Unix (9)
Юристу
Гражданское право (9)
Семейное право (7)
Трудовое право (8)
КоАП (6)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное