... чем отличается от class, кроме того, что по умолчанию мемберы в одном случае паблик, а в другом приват. Если только в этом и вся разница, то почему ж тогда не использовать везде и всюду struct?
Приведите примеры, когда задачу можно решить только при помощи объявлений class.
Не знаю, как с C++. А в C# классы являются ссылочным типом, переменные хранятся в куче, а структуры - тип значений, хранятся в стеке. Подозреваю, что и в С++ тоже самое.
vg писал(а):... чем отличается от class, кроме того, что по умолчанию мемберы в одном случае паблик, а в другом приват. Если только в этом и вся разница, то почему ж тогда не использовать везде и всюду struct?
Приведите примеры, когда задачу можно решить только при помощи объявлений class.
Sea-urchin писал(а):Не знаю, как с C++. А в C# классы являются ссылочным типом, переменные хранятся в куче, а структуры - тип значений, хранятся в стеке. Подозреваю, что и в С++ тоже самое.
Сдается мне, что Си шарп - это переодетый вижуал васик.
vg писал(а):... чем отличается от class, кроме того, что по умолчанию мемберы в одном случае паблик, а в другом приват. Если только в этом и вся разница, то почему ж тогда не использовать везде и всюду struct?
Приведите примеры, когда задачу можно решить только при помощи объявлений class.
ПС. Сам никогда даже не задумывался про это.
Нет таких задач.
Ну почему же, а как насчет задачи "Создать КЛАСС, инкапсулирующий ..."?
Sea-urchin писал(а):Не знаю, как с C++. А в C# классы являются ссылочным типом, переменные хранятся в куче, а структуры - тип значений, хранятся в стеке. Подозреваю, что и в С++ тоже самое.
Сдается мне, что Си шарп - это переодетый вижуал васик.
Наверное надо больше учить матчасть, тогда и мнение может измениться.
vg писал(а):... чем отличается от class, кроме того, что по умолчанию мемберы в одном случае паблик, а в другом приват. Если только в этом и вся разница, то почему ж тогда не использовать везде и всюду struct?
Приведите примеры, когда задачу можно решить только при помощи объявлений class.
ПС. Сам никогда даже не задумывался про это.
Например использование слова class в шаблоне.
template <class T> T min( T a, T b ) { return ( a < b ) ? a : b;}
template <struct T> T min( T a, T b ) { return ( a < b ) ? a : b;} - компилироваться не будет
vg писал(а):... чем отличается от class, кроме того, что по умолчанию мемберы в одном случае паблик, а в другом приват. Если только в этом и вся разница, то почему ж тогда не использовать везде и всюду struct?
Приведите примеры, когда задачу можно решить только при помощи объявлений class.
ПС. Сам никогда даже не задумывался про это.
Классы и вообще ООП придумали не для решения каких то там задач а для автоматизации процесса программирования. Чтоб значить заместо 10 секарей с верхним оьразованием нанять одного 2 секарей дезайнеров и 8 идиотов. С таким же успехом можно поставить вопрос зачем нужен язык С ежели все можно решить на каком нить Ассемблере?
позволю себе процитировать классический труд по сходной тематике -
...
# Real Programmers do List Processing in FORTRAN.
# Real Programmers do String Manipulation in FORTRAN.
# Real Programmers do Accounting (if they do it at all) in FORTRAN.
# Real Programmers do Artificial Intelligence programs in FORTRAN.
# If you can't do it in FORTRAN, do it in assembly language.
# If you can't do it in assembly language, it isn't worth doing.
...
Вопрос не бы про полезность C++. Вопрос (прикол) про то, что во многих ситуациях struct ведёт себя аналогично class (и инкасуляция и наследование с полиморьфизьмом тоже) . Такой вопрос могут задать на интервью. Самый грамотный ответ для интервью, на мой взгляд, у dima-ы.
Правильный ответ такой. Вообще ничем не отличается, кроме того, что по умолчанию у struct'а спецификатор доступа public. Public -- это для совместимости с C.
dima был не совсем корректен в своем примере (или намеренно слукавил). Там ключевое слово "class" используется для описания типа параметра шаблона. Чтобы не было путаницы лучше в таких случаях писать typename:
template<typename XXX> int func(XXX xxx) { ... }
А в вопросе, насколько я понимаю, имеется в виду объявление нового типа.