Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Вы не утруждаете себя пояснять свои оскорбления? Т.е. чисто авторитарный подход. Ну ок, закроем тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 14:43 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
On 06/26/2012 03:32 PM, TopSpace wrote: > Какая критика? Я отметил, что C# более объектно-ориентирован, чем С++ - Вы с > этим не согласны? Ты сначала возьми все языки. Определи метрику для объектно-ориентированости, чтобы соотнести языки с множеством действительных чисел по этому критерию. Вычисли для всех рассматриваемых языков эту метрику, и тогда уже заявляй, что какой-то язык более объектно-ориентированый, чем другой, преподаватель блин, тоже мне. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 14:43 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
MasterZiv, не надо мудрствовать лукаво, все проще. WIKIPEDIAОбъе́ктно-ориенти́рованное, или объектное, программи́рование (в дальнейшем ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов. В C# кроме классов, по сути, других строительных единиц кода нет. В С++ функции и данные могут существовать вне классов, как в языке С. Из этого не следует, что C# более объектно-ориентирован? Если для вас нет - вперед, проводите свои исследования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 14:51 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
TopSpaceMasterZiv, не надо мудрствовать лукаво, все проще."Световодозвуконепроницаемость! Вот что я говорю!" Вы используете термин "более объектно-ориентирован", не раскрывая его значения. WikiОбъе́ктно-ориенти́рованное, или объектное, программи́рование (в дальнейшем ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов.Ergo, C++ суть язык, совместимый с объектно-ориентированной парадигмой программирования. Больше из этого определения ничего не следует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 15:05 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
On 06/26/2012 03:51 PM, TopSpace wrote: > WIKIPEDIA > Объе́ктно-ориенти́рованное, или объектное, программи́рование (в дальнейшем ООП) — > парадигма программирования, в которой основными концепциями являются понятия > объектов и классов. Класс -- основная концепция языка С++. Ну и что дальше ? (кстати они в определении слили в одну чашку объектные и объектно-ориентированные языки, так что ты можешь ещё помедитировать на счёт того, что более объектное -- CLIPPER или Smalltalk). > В C# кроме классов, по сути, других строительных единиц кода нет. > В С++ функции и данные могут существовать вне классов, как в языке С. В C# и яве есть примитивы. Они только пакуются-распаковываются по требованию автоматически, но по сути объектами не являются. > Из этого не следует, что C# более объектно-ориентирован? Неа. (даже если бы это было так). Из этого вообще ничего не следует. Если для вас нет - > вперед, проводите свои исследования. А я ничего не заявлял. что мне доказывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 15:08 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
MasterZivКласс -- основная концепция языка С++. Ну и что дальше ? Основная, но не единственная, С++ поддерживает парадигму процедурного программирования, C# - нет. Я не думал, что нужно пояснять что значит ОО. Если простым языком, то это решение задач в понятиях объектов, а не процедур. C# просто не позволит решить задачу минуя объекты, С++ - запросто. Вот еще линк: Чисто объектно-ориентированные и гибридные языки Среди наших четырех языков, только Java и C# являются чистыми ОО языками (как Eiffel и Smalltalk).... ...C++ и Object Pascal, наоборот, - типичные примеры гибридных языков, которые позволяют программистам использовать при необходимости традиционный подход C или Pascal. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 15:19 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
TopSpaceC# просто не позволит решить задачу минуя объекты, С++ - запросто. Гм. Код: c# 1. 2. 3. Кто найдёт хоть один объект? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 15:35 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
TopSpaceПосмотрел кстати здесь: конструктор по умолчанию . В C++ и Java если нет явным образом опредёленных конструкторов в классе, то компилятор использует конструктор по умолчанию, опредёленный неявным способом, который аналогичен «чистому» конструктору по умолчанию. Казалось бы мелочь, но смысл уже немного другой. Компилятор создает "чистый" конструктор по умолчанию - вот это точное определение. На самом деле правило чуть сложнее. 1) Если в классе нет явных конструкторов по умолчанию и имеются только члены POD типов или структуры содержащие только POD и без явных конструкторов то компилятор создает неявный конструктор который инициализирует всю структуру нулями. Но вызывать этот конструктор он будет только если создаваемый объект имеет явный инициализатор. Таким образом Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 2) Если же у класса есть явный конструктор, то именно на него возлагается обязанность указать инициализаторы для POD членов класса . Этот конструктор вызывается даже если у объекта нет инициализатора, но если в нем не указаны инициализаторы для POD членов то они останутся неинициализированными. Т.е: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 3) Если у класса нет конструктора и смесь членов POD и не-POD (т.е классов с конструкторами), то неявный конструктор создается, вызывается в любом случае, но вызывает конструкторы по умолчанию только у не-POD членов. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Т.е. не-POD данные всегда иницализируются каким либо конструктором, а для иницализации POD-данных всегда требуется указывать явные инициализаторы, кроме единственного исключения - структура состоящая исключительно из POD данных, без конструктора, создаваемый объект которой имеет иницализатор. Во всех остальных случаях у вас будут неиницализированные POD данные (сейчас не рассматриваем статическую память, где все сначала нулями иницализируется, а потом уже применяются выше приведенные правила) По моему достаточно просто запомнить. К поддержке ООП это вообще не имеет отношения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 15:41 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
Друзья, спасибо всем за участие, вы реально открыли для меня новое в таком, казалось бы простом вопросе. Извините, если кого-то задел. Anatoly Moskovsky, спасибо за примеры! Не знаю почему, но в первом из них у меня в g.x все-таки "мусор"... Может зависит от компилятора, или Debug\Release? Смотрел в MS VS 2010 Ultimate (Console, Debug). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 18:36 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
TopSpaceAnatoly Moskovsky, спасибо за примеры! Не знаю почему, но в первом из них у меня в g.x все-таки "мусор"... Может зависит от компилятора, или Debug\Release? Смотрел в MS VS 2010 Ultimate (Console, Debug). Если вы создаете структуру так Foo f; (без инициализатора) то там и должен быть мусор. Я ж написал в коментариях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 18:45 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, не, я как раз про пример Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. У меня в обоих объектах x остается с мусором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 19:22 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
TopSpaceAnatoly Moskovsky, не, я как раз про пример Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. У меня в обоих объектах x остается с мусором. Как проверяли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 19:31 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
On 06/26/2012 08:22 PM, TopSpace wrote: > не, я как раз про пример > > class Foo > { > int x; > }; > > int main() > { > Foo f;// в f.x лежит мусор > Foo g = Foo();// и в g.f тоже! > return 0; > } > > > > У меня в обоих объектах x остается с мусором. и должен быть мусор. Foo -- это POD. У него нет конструктора, и члены никак не инициализируются. В С++ есть генеральный принцип постоения языка -- no overhead. Если тебе не нужна какая-то функциональность в языке, и ты её не используешь, то ты гарантировано получишь 0 накладных расходов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 19:53 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, ну как, breakpoint и watch ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 20:03 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
MasterZivи должен быть мусор. Foo -- это POD. У него нет конструктора, и члены никак не инициализируются. Вы ошибаетесь. Foo() создает инициалированную нулями структуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 20:12 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
TopSpaceAnatoly Moskovsky, ну как, breakpoint и watch Распечатайте в коде. Дебаггер может все что угодно показывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 20:17 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
TopSpace...компилятор сам создаст конструктор по умолчанию" Ты не видишь разницы между конструктором и инициализатором. Отсюда и все твои проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 21:15 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyРаспечатайте в коде. Дебаггер может все что угодно показывать. Плиин... и правда.. кто бы мог подумать. Заносит ноль. Все, снимаю все свои возражения, каноническая фраза действительно соответствует правде, просто она требует разъяснения нюансов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 21:37 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
On 06/26/2012 04:19 PM, TopSpace wrote: > Основная, но не единственная, С++ поддерживает парадигму процедурного > программирования, C# - нет. C# тоже поддерживает парадигму процедурного программирования. > Среди наших четырех языков, только Java и C# являются чистыми ОО языками (как > Eiffel и Smalltalk).... > ...C++ и Object Pascal, наоборот, - типичные примеры гибридных языков, Смотри. Я занимаюсь программированием. Значит я -- программист, так ? Я также например играю на гитаре. Значит я -- гитарист. Так ? Ещё я катаюсь на сноуборде, значит я - сноубордист, и так далее. Также и тут -- Если в языке есть свойства поддержки ООП -- значит это объектно-ориентированный язык. Если в языке есть поддержка процедургого программирования -- это процедурный язык. Если есть поддержка функционального программирования -- это функциональный язык. и так далее. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 11:52 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
MasterZiv, да я не спорю, что оба они (C++ и C#) - мультипарадигменные языки. То, что C# более объектно ориентирован, мне показалось в ходе такой истории. Студенты изучают сначала чистый С, где в т.ч. знакомятся с алгоритмами, это как основа. Потом идет курс ООП, и тут дилемма. Многие хотят учить C#, как более "модный", современный, и удобный для быстрой разработки. Понять их можно, им же и диплом потом писать, и эквивалентный результат в области окошек, чтения файлов, коннекта к базе и т.п. - на .net сделать быстрее, проще (хоть и в ущерб пониманию "как это работает"). Прикол в том, что даже чтобы написать Hello, world! приходится сразу же столкнуться с: 1. понятие класс 2. понятие метода 3. понятие статического метода (для Main). А С++ плавно вытекает и С, тот же main, в начале (как во многих книгах) отличия С++ от С (new, перегрузка функций, ссылки, и т.п.), и только потом классы - получается очень плавно. У них еще действуют привычки от С, типа int вместо bool, глобальные функции. А c# более строго приучает к ОО-стилю. Он просто не даст написать программу без использования хотя бы одного класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 12:45 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
> да я не спорю, что оба они (C++ и C#) - мультипарадигменные языки. То, что C# > более объектно ориентирован, мне показалось в ходе такой истории. Нет "более" или "менее". Прикол в том, что даже чтобы написать Hello, > world! приходится сразу же столкнуться с: > 1. понятие класс > 2. понятие метода > 3. понятие статического метода (для Main). Да ? printf("Hellow, word!\n"); > А С++ плавно вытекает и С, тот же main, в начале (как во многих книгах) отличия > С++ от С (new, перегрузка функций, ссылки, и т.п.), и только потом классы - > получается очень плавно. У них еще действуют привычки от С, типа int вместо > bool, глобальные функции. А c# более строго приучает к ОО-стилю. Он просто не > даст написать программу без использования хотя бы одного класса. А оно надо ? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 15:50 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
MasterZivПрикол в том, что даже чтобы написать Hello, > world! приходится сразу же столкнуться с: > 1. понятие класс > 2. понятие метода > 3. понятие статического метода (для Main). Да ? printf("Hellow, word!\n"); Имелось в виду, в случае C#, по всей видимости. Там же любая (не являющаяся делегатом) функция, включая точку входа, должна быть в каком-нибудь классе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 17:21 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
Ну тогда System.out.println("Hellow, World!"); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 17:30 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
MasterZivНу тогда System.out.println("Hellow, World!"); System.Console.WriteLine("Hellow, World!"); ? Так а ГДЕ это написать? В С++ можно в int main. В C# придется объявить класс, а в нем - public static void Main. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 18:40 |
|
||
|
"Если в классе не объявлены конструкторы, то...
|
|||
|---|---|---|---|
|
#18+
White OwlTopSpace...компилятор сам создаст конструктор по умолчанию" Ты не видишь разницы между конструктором и инициализатором. Отсюда и все твои проблемы. А можна немного поподробнее? ну или ссыль где курить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 17:37 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=37855095&tid=2019068]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
72ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 287ms |
| total: | 451ms |

| 0 / 0 |
