Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2013, 20:18   #1
A9050
Новичок
Джуниор
 
Регистрация: 24.02.2013
Сообщений: 2
По умолчанию ООП - когда стоит использовать классы ?

При изучении ООП столкнулся с вопросом, который в учебниках толком не освещен : когда стоит создавать класс, а в каких случаях лучше обойтись структурой. Пример на Си :
Код:
struct st
{
	const int *arr;
	int size;
	Node *root;
};


           int sp = 0;
	st *st_arr = new st [size];

	st_arr[sp].arr = arr;
	st_arr[sp].size = size;
	st_arr[sp].root = mptr;
	sp++;

имеет ли смысл создать класс типа

class st
{
	int *arr;
	int size;
	Node *root;

public :
	void push (int *arr, int size, Node *root);
...
};

st st_inst;
st_inst.push(arr, size, root);

Последний раз редактировалось Stilet; 24.02.2013 в 21:29.
A9050 вне форума Ответить с цитированием
Старый 24.02.2013, 20:54   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в С++ они имеют лишь одно отличие, а именно уровень доступа по умолчанию.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.02.2013, 21:10   #3
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Структуры рекомендуют использовать для данных с тривиальной семантикой (так называемые POD, от Plain Old Data). То есть такие, какие не требуют конструкции/деструкции и сокрытия реализации. Классы же, для всего остального. Но, как сказали выше, на уровне языка между ними различий практически нет, они могут быть только с точки зрения программиста.
netrino вне форума Ответить с цитированием
Старый 24.02.2013, 22:22   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Если у вас много функций, у которых (первый) аргумент - указатель на структуру, значит стоит задуматься о классах. Гораздо более сложный вопрос - когда использовать виртуальный методы.
waleri вне форума Ответить с цитированием
Старый 24.02.2013, 22:41   #5
A9050
Новичок
Джуниор
 
Регистрация: 24.02.2013
Сообщений: 2
По умолчанию

если структура используется стеком, имеет ли смысл описывать класс для работы с этим стеком ?
A9050 вне форума Ответить с цитированием
Старый 24.02.2013, 22:43   #6
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от A9050 Посмотреть сообщение
если структура используется стеком, имеет ли смысл описывать класс для работы с этим стеком ?
Можно использовать просто структуру.
netrino вне форума Ответить с цитированием
Старый 24.02.2013, 23:31   #7
Last
В прострации
Форумчанин
 
Регистрация: 13.01.2009
Сообщений: 239
По умолчанию

Почему-то остался незамеченным комментарий господина Пепла:
Класс - это и есть структура, только по умолчанию для всех членов класса установлен модификатор доступа private, а для структуры - public. И особой разницы между
Код:
class stack []; и struct stack [];
вообще нет.
Пол-жизни сидючи, в монитор глядючи...
Last вне форума Ответить с цитированием
Старый 24.02.2013, 23:46   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Last Посмотреть сообщение
Почему-то остался незамеченным комментарий господина Пепла:
Класс - это и есть структура, только по умолчанию для всех членов класса установлен модификатор доступа private, а для структуры - public. И особой разницы между
Код:
class stack []; и struct stack [];
вообще нет.
я вообще всегда пишу модификатор вручную в классах
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.02.2013, 23:53   #9
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Классам лучше пользоваться, когда Вы хотите "скрыть" от пользователя метод реализации.
Современные структуры, подобны классам. В принципе, отличаются очень незначительно.
Но, если хотите добиться кроссплатформенности, лучше ипользовать классы. А ешё лучше DLL-ки.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 25.02.2013, 00:01   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Классам лучше пользоваться, когда Вы хотите "скрыть" от пользователя метод реализации.
со структурами тож самое.
Цитата:
Но, если хотите добиться кроссплатформенности, лучше ипользовать классы. А ешё лучше DLL-ки.
dll охрененно кроссплатформены
и классы к кроссплатформенности не имею отношения вообще.
Цитата:
В принципе, отличаются очень незначительно.
единственное отличие описано в моем ответе выше.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Когда нужно использовать ООП? leklerk Общие вопросы по программированию, компьютерный форум 49 01.06.2012 09:09
Стоит ли использовать XPath NieL Общие вопросы Delphi 1 05.04.2011 13:59
Стоит ли использовать inline для оптимизации в MSVC? Kn793 Общие вопросы C/C++ 2 10.12.2010 16:07
Какой скрипт стоит использовать/искать? qdf1 PHP 3 28.06.2010 03:48
сортировка, когда невозможно использовать свойства таблицы IndexFieldName Римма БД в Delphi 5 07.09.2007 10:56