Чайник
 Аватар для cactus09
70 / 70 / 9
Регистрация: 15.02.2012
Сообщений: 475

В чем отличия классов и структур?

17.03.2012, 16:27. Показов 53067. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток.
Уважаемые программисты, обьясните мне в чем отличия классов и структур. Учусь сам по книжкам и прочей лабуде и так и не чего не понимаю. По мне так класс это типо усложненая версия структуры, но тогда зачем она нужна. Вообще зачем нужны классы и как ими пользоваться.

Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.03.2012, 16:27
Ответы с готовыми решениями:

Подскажите начинающему программисту, в чем отличие структур от классов в C++
Расскажите пожалуйста начинающему программисту, в чем отличие структур от классов в C++

C++ Отличия структур от массивов
Объясните, пожалуйста, в чем заключаются отличия массивов от структур?

Напишите отличия классов от объектов
может кто простым языком рассказать про отличие между классами и объектами

21
48 / 48 / 11
Регистрация: 12.03.2012
Сообщений: 108
17.03.2012, 16:33
по типу дефолтного доступа.
класс, объявленный как class, имеет по умолчанию доступ private.
класс, объявленный как struct, имеет по умолчанию доступ public.
как следствие, наследуя структуру от класса, не обязательно указывать слово public

Добавлено через 1 минуту
Нужно отталкиваться от инкапсуляции. Например, конструктор в структуре полезен довольно часто, хотя, быть может, поля открыты и методы-аксессоры отсутствуют. А если, например, нужно гарантировать, что переменная через интерфейс должна быть только для чтения, поле нужно закрыть и написать соответствующий get - это уже намекает на класс.
1
6 / 6 / 1
Регистрация: 04.12.2011
Сообщений: 35
17.03.2012, 16:34
Ну в принципе различие в том , что классы могут использовать функции а структуры нет, кстати, сейчас сам ищу этот материал ,подскажите где можно почитать, о перегрузке функций в классе и т.д
1
48 / 48 / 11
Регистрация: 12.03.2012
Сообщений: 108
17.03.2012, 16:35
имхо это больше формальная сторона, те кодер сам решает, если ему мало структуры и нужно использовать тучу методов, тогда через классы
1
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.03.2012, 16:36
Цитата Сообщение от cactus09 Посмотреть сообщение
В чем отличия классов и структур?
ни в чем, кроме
1) специфкатора доступа к полям и методам по умолчанию
2) спецификатора наследования по умолчанию

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class myclass {
//private members
    int i;
    void f();
public:
//...
};
 
class myclass_2 : myclass /*private inheritance*/{
};
 
struct mystruct {
//public members
    int i;
    void f();
private:
//...
};
 
struct mystruct_2 : mystruct /*public inheritance*/{
};
Цитата Сообщение от andry-raser Посмотреть сообщение
у в принципе различие в том , что классы могут использовать функции а структуры нет
неправда

Цитата Сообщение от cactus09 Посмотреть сообщение
Вообще зачем нужны классы и как ими пользоваться.
в этом вопросе ваш лучший друг - литература
7
48 / 48 / 11
Регистрация: 12.03.2012
Сообщений: 108
17.03.2012, 16:39
andry-raser, попробуй тут http://valera.asf.ru/cpp/book/c09.html
1
6 / 6 / 1
Регистрация: 04.12.2011
Сообщений: 35
17.03.2012, 16:45
Hemull , спасибо посмотрю , просто на лекциях никому не ясно ничего, препод немного не логично трактует
1
Чайник
 Аватар для cactus09
70 / 70 / 9
Регистрация: 15.02.2012
Сообщений: 475
17.03.2012, 16:45  [ТС]
Ну вообщем получается что особых отличий нет и классы и структуры взаимозаменяемы. Всем СПАСБО.
0
17.03.2012, 16:47

Не по теме:

Цитата Сообщение от cactus09 Посмотреть сообщение
Учусь сам по книжкам и прочей лабуде
Книжки - лучшее по чему можно учиться! А по лабуде учится не надо, ни чему не научишся:)

1
6 / 6 / 1
Регистрация: 04.12.2011
Сообщений: 35
17.03.2012, 16:47
cactus09 , ну в общем запомни что в С классов нету, а С++ и то и другое , то есть класс это усовершенствованная версия структуры, с возможностью юзать функции
1
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
17.03.2012, 16:50
вот уже обсуждалось Отличия между структурами и классами
почитай, там умные люди объяснили лучше, чем в книгах

Добавлено через 53 секунды

Не по теме:

Цитата Сообщение от andry-raser Посмотреть сообщение
то есть класс это усовершенствованная версия структуры, с возможностью юзать функции
Jupiter же в 5-ом посте написал правильный ответ, вы сообщения читаете?

3
17.03.2012, 17:20

Не по теме:

Цитата Сообщение от Kastaneda Посмотреть сообщение
вы сообщения читаете?
Зачем читать, когда можно писать? :D

0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
17.03.2012, 17:59
Цитата Сообщение от cactus09 Посмотреть сообщение
Ну вообщем получается что особых отличий нет и классы и структуры взаимозаменяемы
Какие есть технические отличия - сказано в посте #5. Идеологически структура и класс отличаются. Класс обычно используется для реализации чёрного ящика с определёнными интерфейсами, а структура обычно используется как белый ящик с данными.
1
 Аватар для Orodunaar
0 / 0 / 0
Регистрация: 24.07.2013
Сообщений: 46
17.06.2014, 19:16
andry-raser, в С классов нету, но функции в структуре использовать можно и за просто!
Через указатель на адрес начало функции. Если интересно, могу привести пример.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
17.06.2014, 20:39
Цитата Сообщение от Orodunaar Посмотреть сообщение
Если интересно, могу привести пример
Приведи
0
 Аватар для Хедин
76 / 71 / 55
Регистрация: 17.05.2014
Сообщений: 301
17.06.2014, 21:01
andry-raser, cactus09, структура это тот же класс, только с публичными по умолчанию полями. Функции работают и там, и там. Можете попробовать запустить данный код и убедиться:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
struct man
{
    int x, y;
    int get_2x();
};
 
int man::get_2x()
{
    return x*x;
}
 
int main()
{
    man tmp;
    tmp.x = 6;
    std::cout << tmp.get_2x() << std::endl;
    return 0;
}
1
 Аватар для Orodunaar
0 / 0 / 0
Регистрация: 24.07.2013
Сообщений: 46
17.06.2014, 22:25
Evg, проект комерческий, поэтому целиком код модуля привести не могу. Но, не большой кусок кода, что бы можно было уловить суть, да. Это куски кода модуля меню для ARMки и Графического дисплея. Структура меню для понимания и простоты демонстрации взята из первой версии модуля, так как дальше он разрося до 12 файлов по несколькосот строк в каждом.


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#define Sys_Menu    &Menu[ 0]
#define ModBuss     &Menu[ 1]
#define Service     &Menu[ 2]
#define Mode        &Menu[ 3]
#define Options     &Menu[ 4]
void qwe1 (void);
 
static struct typeMenu Menu[28] ={     // инициализация меню
       {"Sys_Menu        \x0", Options ,   ModBuss,     Sys_Menu1,  Sys_Menu,10, 1, 1,  &qwe3},
       {"ModBuss         \x0", Sys_Menu,   Service,     Param0,     ModBuss, 1, 5,  5,  &qwe},
       {"Service         \x0", ModBuss ,   Mode,        UART,       Service, 1, 5,  10, &qwe},
       {"Mode            \x0", Service,    Options,     mode1,      Mode,    1, 5,  15, &qwe},
       {"Options         \x0", Mode,       Sys_Menu,    LCD_Optns,  Options, 1 ,5,  20, &qwe},
 
static struct typeMenu *pMenu = Sys_Menu;//0
 
//Исполняем функцию в пункте меню.
 if (renled){pMenu->p1f(i);}/*нахождения в текущем пункте*/
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
17.06.2014, 23:29
Ну и где тут функции в структуре? Или для тебя функция и указатель на функцию - это одно и то же?
0
 Аватар для Orodunaar
0 / 0 / 0
Регистрация: 24.07.2013
Сообщений: 46
18.06.2014, 00:30
А я и не говорил о том, что можно расположить функцию в структуре, а о том, что её можно использовать в функции.

Цитата Сообщение от Orodunaar Посмотреть сообщение
в С классов нету, но функции в структуре использовать можно и за просто!
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
18.06.2014, 13:18
Ну и покажи мне пальцем, где ты используешь функции в структуре?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.06.2014, 13:18
Помогаю со студенческими работами здесь

В чем отличия C++ и C#
До этого учил С++, сейчас учу С#.Прочитал около 120 страниц книги Шилдт Г. Полное руководство С#4.0 и до меня так и не дошло: а в чём...

в чем отличия?
Всем доброго времени суток. У меня вопросик возник пока изучаю Obj C в чем отличие такой записи от alert.show? Заранее спасибо за ответы

В чем отличия \1 и $1?
подскажите в чем отличия между ними?Где и какой использовать? $replacement='warlda worldo worlda warldo '.&quot;\n&quot;.'world bye'; ...

В чём отличия C# от С++
в чём отличия C# от С++???

В чем отличия версии
В чем отличия visual prolog 5.2 от Turbo Prolog? У них сильно разный синтаксис? Можете кинуть ссылки на его описание(синтаксис)?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru