Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Electroflower
Форумчанка
290 / 83 / 9
Регистрация: 05.01.2012
Сообщений: 432
Записей в блоге: 1
#1

Мнение. Что лучше Структуры или Классы? - C++

11.01.2012, 08:27. Просмотров 1206. Ответов 8
Метки нет (Все метки)

Ребят, вопрос такой у меня возник. При решении одной и той же задачи я использовала Структуры и классы, но вот что из них лучше и почему-так и не поняла
Что из этого лучше использовать и почему?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2012, 08:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Мнение. Что лучше Структуры или Классы? (C++):

Что лучше С++ 6 или С++ 2010 Что выбрать, мое мнение - C++
Что лучше С++ 6 или С++ 2010 Что выбрать, мое мнение Вот я тут на днях думал и пришел к выводу, например если вы хотите чтобы ваша прога...

Исследование структуры FILE или: что вообще можно выудить из этой структуры, указатель на которую мы получаем при открытии файла? - C++
Ничего нельзя. Итак, новичкам напомню, что после выполнения кода FILE* f= fopen ("file.txt", "w"); в переменной f содержится...

Везде говорится, что структуры и классы отличаются только типом доступа к членам по умолчанию - C++
Доброго времени суток всем. У меня возник такой вопрос: Везде говорится, что структуры и классы отличаются только типом доступа...

Что лучше: динамические массивы, векторы, списки, map контейнеры или что-то ещё? - C++
Привет всем! Помогите правильно алгоритм выбрать. Надо получать из файлов (около 8000 файлов) значения и записать их в массивы или в...

Что лучше c++ или c#? - C++
Здравствуйте! Я изучил Pascal и Delphi, сейчас хочу перейти на C, но ни как не могу определиться что выбрать c++ или c#. Не могли бы вы...

Что лучше Pascal или C++ - C++
Какой язык лучше Pascal или C++? и что легче изучать?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
11.01.2012, 08:33 #2
В С++ структура и класс примерно одно и то же.

Только у структуры поля по-умолчанию public, а у класса private. Естественно, явное задание private: и public: решает вопрос.
Ну и логически, у структуры обычно подразумеваются доступные (public) поля, тогда как у класса доступ к полям осуществляется через методы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
struct Point {
  int x, y;  // public, прямой доступ к полю
  Point() : x(0), y(0) {}  // public
  Point(int x_, int y_) : x(x_), y(y_) {}  // public
};
 
class TenPoints {
  Point points[10]; // private
 public:
  B() {} // public
  const Point &get(size_t n) const { return points[n]; } // доступ к полю через метод
  void set(size_t n, const Point &point) { return points[n] = point; } // доступ к полю через метод
};
Можно использовать тот, что логичней или чья запись короче.
0
Electroflower
Форумчанка
290 / 83 / 9
Регистрация: 05.01.2012
Сообщений: 432
Записей в блоге: 1
11.01.2012, 08:43  [ТС] #3
Спасибо
0
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
11.01.2012, 08:43 #4
Ошибся в имени конструктора, должен быть не B() {} , а TenPoints() {}.
0
Electroflower
Форумчанка
290 / 83 / 9
Регистрация: 05.01.2012
Сообщений: 432
Записей в блоге: 1
11.01.2012, 09:53  [ТС] #5
Всем спасибо, все учту
0
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
11.01.2012, 10:04 #6
В С++ структуры поддерживают все плюшки классов.

Код, а-ля STL -- нода контейнера на базе связного списка.
Виртуальные функции, наследование и т.д.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct NodeBase {
  NodeBase *prev;
  NodeBase *next;
  NodeBase(NodeBase *prev_, NodeBase *next_) : prev(prev_), next(next_) {
    next->prev = prev->next = this;
  }
  NodeBase() : prev(this), next(this) {}
  virtual ~NodeBase() {
    next->prev = prev;
    prev->next = next;
  }
};
 
template <class T>
struct NodeType : public NodeBase {
  T data;
  NodeType(NodeBase *prev_, NodeBase *next_, const T &data_)
   : NodeBase(prev_, next_), data(data_) {}
};
Технически, разница только в области видимости по-умолчанию.
0
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
11.01.2012, 11:37 #7
Структуры в основном применяются для организации типа данных, аналогичного записи в Паскале, а классы – для ООП.
Но иногда и вместо класса удобнее использовать структуру, например при написании функтора.
0
fasked
Эксперт С++
4937 / 2517 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
11.01.2012, 12:56 #8
Electroflower, как уже сказали разницы никакой почти нет. Но с точки зрения идеологии правильно использовать структуру, как простой набор данных. А класс это уже объект с собственным поведением.
Цитата Сообщение от Mr.X Посмотреть сообщение
Но иногда и вместо класса удобнее использовать структуру, например при написании функтора.
Так как запись структурой банально короче, чем классом. Для функторов это считается общепринятым, в принципе
0
Electroflower
Форумчанка
290 / 83 / 9
Регистрация: 05.01.2012
Сообщений: 432
Записей в блоге: 1
11.01.2012, 22:57  [ТС] #9
Спасииибоо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2012, 22:57
Привет! Вот еще темы с ответами:

Что лучше - malloc или new? - C++
Что лучше использовать для выделения памяти? int *p = new int; //or int *p = malloc(sizeof(int));

Что лучше ссылка или указатель? - C++
Что лучше - ссылка или указатель?

Что лучше - вектора или массивы? - C++
Я читал где-то, что не стоит пользоваться векторами. Говорят они намного медленнее массивов. А что если потребуется создать массив данных с...

Что лучше массив или вектор? - C++
что лучше использовать массив или vector?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.01.2012, 22:57
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru