Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 59, средняя оценка - 4.63
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
#1

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

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

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

Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2012, 16:27     В чем отличия классов и структур?
Посмотрите здесь:

В чем отличия между union и struct? C++
Обьясните нубу доступно в чем отличия?..VS с++ vs. Builder с++ C++
C++ В чем отличия разработки приложения 32-x и 64x?
C++ В чем отличия cin.getline от gets?
Подскажите начинающему программисту, в чем отличие структур от классов в C++ C++
В чем отличия между выражением (expression) и оперетором (statement)? C++
C++ В чем существенные отличия Array и Vector
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hemull
47 / 47 / 1
Регистрация: 12.03.2012
Сообщений: 108
17.03.2012, 16:33     В чем отличия классов и структур? #2
по типу дефолтного доступа.
класс, объявленный как class, имеет по умолчанию доступ private.
класс, объявленный как struct, имеет по умолчанию доступ public.
как следствие, наследуя структуру от класса, не обязательно указывать слово public

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

Не по теме:

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

andry-raser
6 / 6 / 0
Регистрация: 04.12.2011
Сообщений: 35
17.03.2012, 16:47     В чем отличия классов и структур? #10
cactus09 , ну в общем запомни что в С классов нету, а С++ и то и другое , то есть класс это усовершенствованная версия структуры, с возможностью юзать функции
Kastaneda
Форумчанин
Эксперт С++
4262 / 2794 / 219
Регистрация: 12.12.2009
Сообщений: 7,122
Записей в блоге: 1
Завершенные тесты: 1
17.03.2012, 16:50     В чем отличия классов и структур? #11
вот уже обсуждалось Отличия между структурами и классами
почитай, там умные люди объяснили лучше, чем в книгах

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

Не по теме:

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

silent_1991
17.03.2012, 17:20
  #12

Не по теме:

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

Evg
Эксперт CАвтор FAQ
17309 / 5557 / 347
Регистрация: 30.03.2009
Сообщений: 15,127
Записей в блоге: 26
17.03.2012, 17:59     В чем отличия классов и структур? #13
Цитата Сообщение от cactus09 Посмотреть сообщение
Ну вообщем получается что особых отличий нет и классы и структуры взаимозаменяемы
Какие есть технические отличия - сказано в посте #5. Идеологически структура и класс отличаются. Класс обычно используется для реализации чёрного ящика с определёнными интерфейсами, а структура обычно используется как белый ящик с данными.
Orodunaar
0 / 0 / 0
Регистрация: 24.07.2013
Сообщений: 44
17.06.2014, 19:16     В чем отличия классов и структур? #14
andry-raser, в С классов нету, но функции в структуре использовать можно и за просто!
Через указатель на адрес начало функции. Если интересно, могу привести пример.
Evg
Эксперт CАвтор FAQ
17309 / 5557 / 347
Регистрация: 30.03.2009
Сообщений: 15,127
Записей в блоге: 26
17.06.2014, 20:39     В чем отличия классов и структур? #15
Цитата Сообщение от Orodunaar Посмотреть сообщение
Если интересно, могу привести пример
Приведи
Хедин
73 / 68 / 36
Регистрация: 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;
}
Orodunaar
0 / 0 / 0
Регистрация: 24.07.2013
Сообщений: 44
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);}/*нахождения в текущем пункте*/
Evg
Эксперт CАвтор FAQ
17309 / 5557 / 347
Регистрация: 30.03.2009
Сообщений: 15,127
Записей в блоге: 26
17.06.2014, 23:29     В чем отличия классов и структур? #18
Ну и где тут функции в структуре? Или для тебя функция и указатель на функцию - это одно и то же?
Orodunaar
0 / 0 / 0
Регистрация: 24.07.2013
Сообщений: 44
18.06.2014, 00:30     В чем отличия классов и структур? #19
А я и не говорил о том, что можно расположить функцию в структуре, а о том, что её можно использовать в функции.

Цитата Сообщение от Orodunaar Посмотреть сообщение
в С классов нету, но функции в структуре использовать можно и за просто!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2014, 13:18     В чем отличия классов и структур?
Еще ссылки по теме:

Работа с текстовыми файлами: в чем принципиальные отличия представленных программ? C++
C++ C++ Отличия структур от массивов
C++ Циклы while и for: в чем суть отличия?
В чем отличия wchar_t от char16_t? C++
C++ Напишите отличия классов от объектов

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт CАвтор FAQ
17309 / 5557 / 347
Регистрация: 30.03.2009
Сообщений: 15,127
Записей в блоге: 26
18.06.2014, 13:18     В чем отличия классов и структур? #20
Ну и покажи мне пальцем, где ты используешь функции в структуре?
Yandex
Объявления
18.06.2014, 13:18     В чем отличия классов и структур?
Ответ Создать тему
Опции темы

Текущее время: 00:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru