![]() |
|
Модераторы: bsa |
![]()
|
|
| shinoby |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 6.3.2008 Репутация: нет Всего: нет |
Во многом класс и структура похожи.
Вопрос: Предположим я создал класс и обявил массив объектов данного класса (т.е. пытаюсь организовать что-то на подобии базы данных). Каждому элементу данного массива я присвоил N-ую информацию. Могу ли я записать/считать полученные данные в (из) файл(а), как это делал со структурами (по блочно, при помощи fread() и fwrite())? В стиле С++ какие еще функции работают с блочной передачей данных (желательно с синтаксисом)? |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
можешь, точно так же. если нет виртуальных функций
Это сообщение отредактировал(а) baldina - 7.3.2008, 22:10 |
|||
|
||||
| shinoby |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 6.3.2008 Репутация: нет Всего: нет |
Так то оно так, вопрос в другом: как эти функции будут реагировать на процедуры внутри класса, ведь их наличие и является существенным отличием между структурами и классами? Класс без процедур - это структура (улавливаешь суть разницы)? |
|||
|
||||
| baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
но вообще принято почленно выводить. все-таки С++ - язык сильно типизированный.
Если нужно систематически сохранять/восстанавливать объекты, стоит посмотреть в сторону boost::serialization Добавлено через 2 минуты и 49 секунд "процедуры внутри класса" - они функциями-членами или методами называются - не занимают места в классе, не подлежат сохранению и восстановлению.
sizeof (A) == sizeof (B) Добавлено через 7 минут и 30 секунд
Это неверно. В С++ struct и class отличаются только доступом к членам по умолчанию: для struct - public, для class - private |
||||
|
|||||
| shinoby |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 6.3.2008 Репутация: нет Всего: нет |
Ну насчет: "Класс без процедур - это структура" я немного утрировал.
А что получается если в классе присутствуют виртуальные функции? |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
в классе хранится указатель на таблицу виртуальных функций. где именно этот указатель и т.п. стандартом не определено и зависит от реализации. следовательно схема такая: сохраняются данные класса (значения переменных-членов). Для восстановления надо сначала создать экземпляр класса в памяти (обычно используя конструктор по умолчанию), а потом записать в члены класса сохраненные значения. библиотеки типа boost::serialization этим и занимаются
Добавлено через 5 минут и 21 секунду в простых случаях можно обойтись подручными средствами:
|
|||
|
||||
| shinoby |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 6.3.2008 Репутация: нет Всего: нет |
В чем суть данного участка кода? P.S.:Все когдато-то были начинающими! Это сообщение отредактировал(а) shinoby - 7.3.2008, 23:05 |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
объявление члена класса типа std::string с именем s
std - пространство имен string - имя класса s - имя члена класса Х ---- std::string "в заголовках" находится в <string> -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |