|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.05.2009, 10:24 | #1 |
Пользователь
Регистрация: 02.05.2009
Сообщений: 27
|
Классы vs. функции (вопрос, а не холивар)
Здравствуйте.
В обьектном аспекте С++ я совсем новичок, ибо раньше обьектные языки не использовал. Сейчас поэксперементировал с классами, конструкторами и.т.д. Возник вопрос, а зачем собственно всё это надо? Все, что можно сделать в классе, можно сделать в функции и скорее всего это займет меньше кода... Вот пример из моей книги: Код:
Код:
int minivan_passengers = 7 и.т.д. ? Тогда мы экономим 7 строк кода. Ну есть ещё много непонятных мне вещей в классах, попробую сам разобратся.... Основной вопрос, для чего нужно, а для чего не нужно использовать эти самые классы. Ну и немного offtopic вопрос, который меня вечно мучает. Он не совсем связан с С++, скорее связан со всеми структурными языками. Когда следует использовать глобальные переменные, а когда нет? Вот к примеру: Код:
Чем более читаете, не размышляя, тем более, уверяетесь, что много знаете, а чем более размышляете, читая, тем яснее видите, что знаете еще очень мало.
Последний раз редактировалось Qousio; 21.05.2009 в 10:27. |
21.05.2009, 13:23 | #2 | |||
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Цитата:
Цитата:
Вот мой вариант с классами: Код:
Но теперь посмотрим на использование этого класса: Код:
Глобальные переменные - зло. Константы глобальные - это еще куда ни шло, хотя и их в идеале нужно разносить по соответствующим пространствам имён (namespace). Допустим две функции изменяют одну и ту же глобальную переменную. Вы решили эти функции вызвать из разных потоков и выполняются они параллельно. Что из этого получится? Цитата:
Например, была глобальная переменная и функция: Код:
|
|||
21.05.2009, 13:40 | #3 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Нет, ООП чтука полезная. Цитата:
Нет Глобалы это не зло, а всего лишь искушение злоупотребления. Переменные нужно определять для того участка кода, где конкретная переменная нужна. Если она нужна для всей программы, например как в Делфи переменные типа TForm то тут уж локализовывать по функциям ее не стоит
I'm learning to live...
|
||
21.05.2009, 17:14 | #4 |
Пользователь
Регистрация: 02.05.2009
Сообщений: 27
|
Понятно, буду пристальнее приглядыватся к ООП. А насчёт глобальных переменных, если они такое зло, зачем же их оставили в С++ ? Я вот читал статью одного из людей принимавших нынешний стандарт С++, там был пункт про команду Goto. Какое бы оно зло не было и как бы оно не нарушало структуру кода, его оставили т.к. иногда это просто очень полезная штука. Например:
Код:
Что-то я отошёл от темы, вообщем допустим у меня в коде глобальная константа g = 9.8 которая используется во многих функцих, что-же тут может быть такого злого?
Чем более читаете, не размышляя, тем более, уверяетесь, что много знаете, а чем более размышляете, читая, тем яснее видите, что знаете еще очень мало.
|
21.05.2009, 17:36 | #5 | |||
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Цитата:
Да и вообще С/С++ - это очень демократичные языки. Никому ничего не навязывают. Пишите как хотите, как говорится Цитата:
error1 erro2 error3 ... Хотя наоборот никаких ошибок не возникло. Нравится goto - изучайте ассемблер, а на языках класса С/С++ этому механизму есть куча альтернатив на любой вкус: Можно использовать механизм исключений: Код:
Код:
Цитата:
Допустим в математике некий коэффициент g есть и в физике величина g и третий модуль, который использует и математику и физику: Код:
А с пространствами имён ситуация уже лучше будет: Код:
|
|||
21.05.2009, 17:48 | #6 |
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
Сам изучаю С++, ООП-рулит!
Очень удобно объектами представлять реальные объекты, те писать игры Можно маленький вопросик(для него, думаю, не стоит создавать даже темы): Код:
|
21.05.2009, 17:51 | #7 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
1. вектор, а не массив
2. std::vector< int > v; |
21.05.2009, 18:00 | #8 |
Пользователь
Регистрация: 02.05.2009
Сообщений: 27
|
Большое спасибо за разьяснения pu4koff, буду тренироватся!
Чем более читаете, не размышляя, тем более, уверяетесь, что много знаете, а чем более размышляете, читая, тем яснее видите, что знаете еще очень мало.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
вопрос по функции WaitForSingleObject | shurik_7866 | Общие вопросы Delphi | 2 | 08.12.2008 10:53 |
Создание функции вопрос от новичка C | CKent | Общие вопросы C/C++ | 2 | 07.12.2008 17:31 |
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) | Albert2008 | Общие вопросы Delphi | 4 | 21.08.2008 15:33 |
Вопрос про правильное написание функции | AndreichSB | Microsoft Office Excel | 6 | 25.12.2006 19:27 |