Приложение: Ответ отправлен: 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). Кажется это единственное отличие." Кому верить???
Приветствую Вас, 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.