отличия С++ и Си с классами
От: sergey2b ЮАР  
Дата: 02.01.19 17:28
Оценка: -1
как вы считаете чем С++ отличаеться от Си с классами
Re: отличия С++ и Си с классами
От: rg45 СССР  
Дата: 02.01.19 18:38
Оценка:
Здравствуйте, sergey2b, Вы писали:

S>как вы считаете чем С++ отличаеться от Си с классами


Примерно тем же, чем граната в руках человека отличается от гранаты в руках обезяны.
--
Re[2]: отличия С++ и Си с классами
От: sergey2b ЮАР  
Дата: 02.01.19 18:43
Оценка:
Здравствуйте, rg45, Вы писали:

R>Примерно тем же, чем граната в руках человека отличается от гранаты в руках обезяны.


мета понятна,
но можно более формальные критерии
Re[3]: отличия С++ и Си с классами
От: rg45 СССР  
Дата: 02.01.19 18:47
Оценка:
Здравствуйте, sergey2b, Вы писали:

R>>Примерно тем же, чем граната в руках человека отличается от гранаты в руках обезяны.


S>мета понятна,

S>но можно более формальные критерии

Как-нибудь потом. С Новым Годом!
--
Отредактировано 02.01.2019 18:51 rg45 . Предыдущая версия .
Re: отличия С++ и Си с классами
От: a_g_99 США http://www.hooli.xyz/
Дата: 02.01.19 19:03
Оценка:
Здравствуйте, sergey2b, Вы писали:

S>как вы считаете чем С++ отличаеться от Си с классами


чтобы это прочувствовать вам нужно написать что то на objective-c (C++ вы уже знаете)
Re: отличия С++ и Си с классами
От: σ  
Дата: 02.01.19 19:26
Оценка: +1
S>как вы считаете чем С++ отличаеться от Си с классами
У Страуструпа же написано в "Дизайне и эволюции ...".
Re[3]: отличия С++ и Си с классами
От: Максим Рогожин Россия  
Дата: 02.01.19 20:24
Оценка:
Здравствуйте, sergey2b, Вы писали:

S>Здравствуйте, rg45, Вы писали:


R>>Примерно тем же, чем граната в руках человека отличается от гранаты в руках обезяны.


S>мета понятна,

S>но можно более формальные критерии

Ну шаблонами, например, исключениями...
Re[4]: отличия С++ и Си с классами
От: sergey2b ЮАР  
Дата: 02.01.19 20:30
Оценка:
Здравствуйте, Максим Рогожин, Вы писали:

МР>Ну шаблонами, например, исключениями...


те если есть шаблоны, исключения и немспейсы то это уже плюсы
Re[5]: отличия С++ и Си с классами
От: Masterspline  
Дата: 02.01.19 23:27
Оценка: +1
S>те если есть шаблоны, исключения и немспейсы то это уже плюсы

Самое главное в плюсах — это РАЙ (RAII).
Re[6]: отличия С++ и Си с классами
От: sergey2b ЮАР  
Дата: 02.01.19 23:31
Оценка: -2
Здравствуйте, Masterspline, Вы писали:

M>Самое главное в плюсах — это РАЙ (RAII).


самописный RAII считаеться или только из stl

я работал с кодом где все данные были на стеки или глобальные переменные (микроконтроллер)
те RAII хороший критерий но не всегда
Re[7]: отличия С++ и Си с классами
От: Masterspline  
Дата: 03.01.19 03:50
Оценка: +1
S>самописный RAII считаеться или только из stl

RAII — это свойство компилятора (при выходе из области видимости, все переменные уничтожаются, в том числе объекты с запуском деструктора). Это позволяет создать, например, ScopeGuard, когда при выходе из области видимости (например, из функции по любой причине) будет выполнен код, переданный этому ScopeGuard при его создании. Таким образом, RAII не может быть ни самописным, ни библиотечным (stl), только компиляторным.
Re[8]: отличия С++ и Си с классами
От: sergey2b ЮАР  
Дата: 03.01.19 04:19
Оценка: -3
Здравствуйте, Masterspline, Вы писали:

S>>самописный RAII считаеться или только из stl


M>RAII — это свойство компилятора (при выходе из области видимости, все переменные уничтожаются, в том числе объекты с запуском деструктора). Это позволяет создать, например, ScopeGuard, когда при выходе из области видимости (например, из функции по любой причине) будет выполнен код, переданный этому ScopeGuard при его создании. Таким образом, RAII не может быть ни самописным, ни библиотечным (stl), только компиляторным.


в Си при выходе из области видимости переменные тоже уничтожаються
Re: отличия С++ и Си с классами
От: LaptevVV Россия  
Дата: 03.01.19 05:28
Оценка: 10 (2) :)
S>как вы считаете чем С++ отличается от Си с классами
Виртуальные функции.
Си с классами не нуждается в виртуальных функциях — отдельные классы можно писать и без них.
Шаблоны, кстати, тоже просто классы, хоть и обобщенные.
А вот открытое наследование с виртуальными функциями — это дао ООП.
Динамический полиморфизм (так сказал Александреску).
Пока вы не постигнете виртуальность — вы не постигнете ООП.
И принцип подстановки — единственный из принципов SOLID, реализованный непосредственно в языках программирования.
Остальные принципы — это благие пожелания...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: отличия С++ и Си с классами
От: edton  
Дата: 03.01.19 06:00
Оценка:
Здравствуйте, sergey2b, Вы писали:

S>как вы считаете чем С++ отличаеться от Си с классами


Если без полутонов, то ответ в вопросе — оборачиваем код на голом C в классы и получаем конструктор, деструктор и отсутствие необходимости передавать хэндл объекта в каждую функцию
Отредактировано 03.01.2019 6:10 edton . Предыдущая версия .
Re[9]: отличия С++ и Си с классами
От: Skorodum Россия  
Дата: 03.01.19 09:45
Оценка:
Здравствуйте, sergey2b, Вы писали:

S>в Си при выходе из области видимости переменные тоже уничтожаються

...память под которые выделенна в стеке. С++ позволяет красиво использовать это для освобождения любых ресурсов.
Re[2]: отличия С++ и Си с классами
От: Максим Рогожин Россия  
Дата: 03.01.19 15:53
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>И принцип подстановки — единственный из принципов SOLID, реализованный непосредственно в языках программирования.

Можно поподробнее? Или ссылку подтверждающую.
Re: отличия С++ и Си с классами
От: smeeld  
Дата: 03.01.19 16:08
Оценка:
Здравствуйте, sergey2b, Вы писали:

S>как вы считаете чем С++ отличаеться от Си с классами


Это уже перетёрто сто раз на данном форуме.
Re: отличия С++ и Си с классами
От: smeeld  
Дата: 03.01.19 16:19
Оценка:
Здравствуйте, sergey2b, Вы писали:

S>как вы считаете чем С++ отличаеться от Си с классами


Я бы провёл границу по наличию/отсутствию compile time execution. Это единственное, чего нельзя реализовать в чистом Cи. Си с классами-это есть расширенный Cи. И неважно, расширен ли он на уровне компилятора (все эти RAII, exceptions, etc) или на уровне некоторого Cи-шного фреймворка, которые предоставляет нужные функции в виде макросов, структур, процедур etc.
Re[2]: отличия С++ и Си с классами
От: sergey2b ЮАР  
Дата: 03.01.19 16:26
Оценка:
Здравствуйте, smeeld, Вы писали:

S>Это уже перетёрто сто раз на данном форуме.


пока выше ответившие разделились вомнении

вопрос возник потому что я пришел на собеседование
рассказал, чем я занимался, а мне говорят ты писал на Си с классами, мы поспорили 5 минут и собеседование закончилось


вот решил сверить понимание вопроса
Re[3]: отличия С++ и Си с классами
От: Stanislav V. Zudin Россия  
Дата: 03.01.19 16:56
Оценка: 4 (1)
Здравствуйте, sergey2b, Вы писали:

S>вопрос возник потому что я пришел на собеседование

S>рассказал, чем я занимался, а мне говорят ты писал на Си с классами, мы поспорили 5 минут и собеседование закончилось


S>вот решил сверить понимание вопроса


"Дизайн и эволюцию" не читал, поэтому попытаюсь сформулировать по-своему.

Есть типично Сишные приемы работы, а есть "Приплюснутые"

Скажем, run-time полиморфизм реализуем и там, и там. Но через указатели на функции — Сишная фишка, а виртуальные функции — С++.

Завязка на RAII (сюда можно отнести и использование к-торов/д-торов) — С++ приём, недостижимый в Си. В Си приходится отделять этапы получения и освобождения ресурсов от их использования.

Исключения. Завязка на исключения — это С++, применение кодов возврата — Си, либо Си с классами.

Шаблоны.
С одной стороны использование шаблонного std::vector не превращает код из "Си с классами" в С++. Зато лямбды и оптимизация шаблонного кода могут дать код гораздо эфективнее, чем аналог на Си. Т.е. можно считать, что активное применение compile-time полиморфизма, вычислений, кодогенерации делают код явно плюсатым.
Ну вот так как-то...
_____________________
С уважением,
Stanislav V. Zudin
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.