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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 108, средняя оценка - 4.98
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
#1

Отличия между структурами и классами - C++

18.08.2010, 12:38. Просмотров 13871. Ответов 58
Метки нет (Все метки)

Объясните пожалуйста, в С++, получается, что структура отличается от класса только тем, что у нее по умолчанию все данные public?
Т.е. наследовать структуры я тоже могу. Тогда как-то непонятен смысл создания двух одинаковых типов объектов, только что с разными названиями.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
18.08.2010, 12:40     Отличия между структурами и классами #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
half-node, Совместимость с Си.
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
18.08.2010, 12:41  [ТС]     Отличия между структурами и классами #3
Цитата Сообщение от Lavroff Посмотреть сообщение
half-node, Совместимость с Си.
Очень лаконично...но не вполне для меня понятно. Что ты имеешь в виду?
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
18.08.2010, 12:58     Отличия между структурами и классами #4
half-node, Структуры - совместимость с языком Си. В С++ структуры и классы эквивалентны, кроме доступа по умолчанию.

Добавлено через 15 минут
Хотя... Не уверен что в классе можно определить битовые поля, как в структуре, но наверное тоже можно. Да можно. Тогда ничем, кроме доступа
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
18.08.2010, 13:03  [ТС]     Отличия между структурами и классами #5
Спасибо. Более или менее ясно.
fasked
Эксперт C++
4932 / 2512 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
18.08.2010, 13:05     Отличия между структурами и классами #6
Цитата Сообщение от Lavroff Посмотреть сообщение
Совместимость с Си
Если бы в Си++ структуры убрали совсем, то Си-подобный код перестал бы компилироваться. Структуры слишком часто встречаются в Си-коде, чтобы такое позволить.
в Си++ вообще лучше пользоваться классами.
CyBOSSeR
Эксперт C++
2298 / 1668 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
18.08.2010, 13:49     Отличия между структурами и классами #7
Цитата Сообщение от fasked Посмотреть сообщение
в Си++ вообще лучше пользоваться классами.
Это спорный вопрос.
Если набор данных не имеет собственного поведения лучше его оформить в виде структуры.
fasked
Эксперт C++
4932 / 2512 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
18.08.2010, 14:10     Отличия между структурами и классами #8
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Это спорный вопрос.
Если набор данных не имеет собственного поведения лучше его оформить в виде структуры.
да, я конечно поспешил с такими словами.
но в чем разница с технической точки зрения?
nikkka
Мат в 32 хода
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
18.08.2010, 16:49     Отличия между структурами и классами #9
CyBOSSeR, а можно в структурах объявлять функции?
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
18.08.2010, 16:54  [ТС]     Отличия между структурами и классами #10
Цитата Сообщение от nikkka Посмотреть сообщение
CyBOSSeR, а можно в структурах объявлять функции?
Да, можно. Более того, в С++ структуры можно даже наследовать >_<

Добавлено через 2 минуты
Только я вот не уверен, точнее не знаю, имеет ли структура конструктор. Подозреваю, что нет.
Ошибся))
Каждая структура имеет неявный открытый конструктор без параметров. Этот конструктор инициализирует все элементы данных структуры с их значениями по умолчанию. Это поведение переопределить невозможно.
Добавлено через 2 минуты
Вообще вот ссылка на MSDN по этому вопросу. Если вдруг кому-то пригодится, как мне.
HIMen
4119 / 1368 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
18.08.2010, 16:59     Отличия между структурами и классами #11
half-node, там про структуры CLR
easybudda
Эксперт С++
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
18.08.2010, 17:00     Отличия между структурами и классами #12
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от half-node Посмотреть сообщение
Только я вот не уверен, точнее не знаю, имеет ли структура конструктор.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
struct AB {
    int a;
    int b;
    AB(int _a, int _b) : a(_a), b(_b) {}
};
 
int main(){
    AB ab(13, 69);
    std::cout << "a = " << ab.a << " b = " << ab.b << std::endl;
    return 0;
}
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
18.08.2010, 17:04  [ТС]     Отличия между структурами и классами #13
Цитата Сообщение от HIMen Посмотреть сообщение
half-node, там про структуры CLR
Там вообще про VB...

easybudda, спасибо!
Буду знать. Только вот теперь вообще я потерялся в смысле существования класса, если есть структура, которая поддерживает все тоже самое.
easybudda
Эксперт С++
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
18.08.2010, 17:10     Отличия между структурами и классами #14
half-node, просто считайте синонимами объявления
C++
1
2
3
4
5
6
7
8
struct A{
  // bla bla bla
};
 
class A{
public:
  // bla bla bla
}
Ну и по поводу совместимости с С - к примеру весь WinAPI написан на С. За неимением в С++ конструкций типа struct пришлось бы немыслемые велосипеды городить, чтобы этим самым API пользоваться...
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
18.08.2010, 17:15  [ТС]     Отличия между структурами и классами #15
А зачем пользоваться типом struct, если есть эквивалентный class?
Nameless One
Эксперт С++
5764 / 3413 / 255
Регистрация: 08.02.2010
Сообщений: 7,429
18.08.2010, 17:28     Отличия между структурами и классами #16
Цитата Сообщение от half-node Посмотреть сообщение
А зачем пользоваться типом struct, если есть эквивалентный class?
Объективных причин нет. Не хочешь - не пользуйся. Просто для многих (да и для меня то же) привычней делать так, как сказал CyBOSSeR
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
18.08.2010, 17:31  [ТС]     Отличия между структурами и классами #17
Цитата Сообщение от Nameless One Посмотреть сообщение
Объективных причин нет. Не хочешь - не пользуйся. Просто для многих (да и для меня то же) привычней делать так, как сказал CyBOSSeR
Ну да, мой учебник тоже об этом намекает. Просто хотелось разобраться что к чему.
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
19.08.2010, 17:52     Отличия между структурами и классами #18
Цитата Сообщение от half-node Посмотреть сообщение
Ну да, мой учебник тоже об этом намекает. Просто хотелось разобраться что к чему.
Структура отличается от класса спецификатором доступа по умолчанию да.
Не только в обьявлениях внутренных членов, но и при наследовании.
В остальном - абсолютно идентичны (в С++ )
Смысл закрытости по умолчанию в том, что бы дизайнер на автомате не открывал всевозможные данные, а предоставлял интерфейс только к тому, что надо.

Кроме того, само название struct указывает, что речь идёт о структуре данных и все. class - это обобщение некоего обьекта, у к-рого есть поведение и т.д.
eugrita
3 / 4 / 0
Регистрация: 18.11.2009
Сообщений: 420
27.07.2011, 23:47     Отличия между структурами и классами #19
Не знаю, если отвлечься от формализма. По существу по-моему класс отличается от структуры - наличием методов и может быть свойств. И может быть событий, хотя в ANSI C++ события специально не поддерживаются. Хотя как писалось ниже в С++ можно в структуры включать функции, считаю это излишней вольностью.
По моему объект предметной обласnи описывается классом на С++ только если у него есть какой-то метод (функция) меняющая его свойства или создающая новое свойство).
Вот по этой то причине я мучался с классами представляющими модель квартира-комнаты.
В самом деле свойств дофига, а хоть один метод? Если отвлечься от тривиальных - расчет кубатуры по размерам комнаты. Если не интересоваться скажем процессами включения/выключения света как в некот учебн примерах классов - то вроде ничего. Ну может по смыслу задачи подойдет метод -прописка чел на жилплощади.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2011, 01:37     Отличия между структурами и классами
Еще ссылки по теме:

В чем отличия между выражением (expression) и оперетором (statement)? C++
Передача данных между классами C++
C++ Взаимодействие между классами
Связь между 2 классами C++
C++ Передача данных между классами

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

Или воспользуйтесь поиском по форуму:
OstapBender
582 / 520 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
28.07.2011, 01:37     Отличия между структурами и классами #20
структуры больше походят для простых сущностей например
C
1
2
3
4
struct coord {
int x;
int y;
};
Yandex
Объявления
28.07.2011, 01:37     Отличия между структурами и классами
Ответ Создать тему
Опции темы

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