Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/254: Рейтинг темы: голосов - 254, средняя оценка - 4.82
Чайник
 Аватар для cactus09
70 / 70 / 9
Регистрация: 15.02.2012
Сообщений: 475

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

17.03.2012, 16:27. Показов 53246. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru