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

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

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

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

Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2012, 16:27
Ответы с готовыми решениями:

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

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

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

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

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

Добавлено через 1 минуту
Нужно отталкиваться от инкапсуляции. Например, конструктор в структуре полезен довольно часто, хотя, быть может, поля открыты и методы-аксессоры отсутствуют. А если, например, нужно гарантировать, что переменная через интерфейс должна быть только для чтения, поле нужно закрыть и написать соответствующий get - это уже намекает на класс.
1
6 / 6 / 1
Регистрация: 04.12.2011
Сообщений: 35
17.03.2012, 16:34 3
Ну в принципе различие в том , что классы могут использовать функции а структуры нет, кстати, сейчас сам ищу этот материал ,подскажите где можно почитать, о перегрузке функций в классе и т.д
1
48 / 48 / 11
Регистрация: 12.03.2012
Сообщений: 108
17.03.2012, 16:35 4
имхо это больше формальная сторона, те кодер сам решает, если ему мало структуры и нужно использовать тучу методов, тогда через классы
1
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.03.2012, 16:36 5
Цитата Сообщение от 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 6
andry-raser, попробуй тут http://valera.asf.ru/cpp/book/c09.html
1
6 / 6 / 1
Регистрация: 04.12.2011
Сообщений: 35
17.03.2012, 16:45 7
Hemull , спасибо посмотрю , просто на лекциях никому не ясно ничего, препод немного не логично трактует
1
Чайник
70 / 70 / 9
Регистрация: 15.02.2012
Сообщений: 475
17.03.2012, 16:45  [ТС] 8
Ну вообщем получается что особых отличий нет и классы и структуры взаимозаменяемы. Всем СПАСБО.
0
Kastaneda
17.03.2012, 16:47
  #9

Не по теме:

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

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

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

Не по теме:

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

3
silent_1991
17.03.2012, 17:20
  #12

Не по теме:

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

0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
17.03.2012, 17:59 13
Цитата Сообщение от cactus09 Посмотреть сообщение
Ну вообщем получается что особых отличий нет и классы и структуры взаимозаменяемы
Какие есть технические отличия - сказано в посте #5. Идеологически структура и класс отличаются. Класс обычно используется для реализации чёрного ящика с определёнными интерфейсами, а структура обычно используется как белый ящик с данными.
1
0 / 0 / 0
Регистрация: 24.07.2013
Сообщений: 46
17.06.2014, 19:16 14
andry-raser, в С классов нету, но функции в структуре использовать можно и за просто!
Через указатель на адрес начало функции. Если интересно, могу привести пример.
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
17.06.2014, 20:39 15
Цитата Сообщение от Orodunaar Посмотреть сообщение
Если интересно, могу привести пример
Приведи
0
76 / 71 / 55
Регистрация: 17.05.2014
Сообщений: 301
17.06.2014, 21:01 16
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
0 / 0 / 0
Регистрация: 24.07.2013
Сообщений: 46
17.06.2014, 22:25 17
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
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
17.06.2014, 23:29 18
Ну и где тут функции в структуре? Или для тебя функция и указатель на функцию - это одно и то же?
0
0 / 0 / 0
Регистрация: 24.07.2013
Сообщений: 46
18.06.2014, 00:30 19
А я и не говорил о том, что можно расположить функцию в структуре, а о том, что её можно использовать в функции.

Цитата Сообщение от Orodunaar Посмотреть сообщение
в С классов нету, но функции в структуре использовать можно и за просто!
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
18.06.2014, 13:18 20
Ну и покажи мне пальцем, где ты используешь функции в структуре?
0
18.06.2014, 13:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.06.2014, 13:18
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru