С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/63: Рейтинг темы: голосов - 63, средняя оценка - 4.54
0 / 0 / 1
Регистрация: 22.01.2012
Сообщений: 11

Везде говорится, что структуры и классы отличаются только типом доступа к членам по умолчанию

22.01.2012, 21:20. Показов 12480. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток всем.

У меня возник такой вопрос:

Везде говорится, что структуры и классы отличаются только типом доступа к членам по умолчанию. А как насчет типа наследования по умолчанию? Для классов - он private, а для структур?

То есть:
C++
1
2
3
struct A { int a;};
 
struct B :  A {};
Какой здесь тип наследования? Подозреваю что public, но интересно, что об этом говорит стандарт. Не нашел нигде подробного объяснения.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.01.2012, 21:20
Ответы с готовыми решениями:

Определить, верно ли, что данные последовательности отличаются только порядком
Даны натуральное число N и две последовательности A1 , A2 , …, AN и B1, B2, …, BN. Определить, верно ли, что эти последовательности...

Даны два массива X1 и X2, верно ли что X1 и X2 отличаются только порядком элементов?
Даны два массива X1 и X2, причем они могут содержать повторяющиеся элементы. Верно ли, что X1 и X2 отличаются только порядком элементов? ...

Определить верно ли, что массивы отличаются только порядком следования элементов
Даны натуральное число N и два одномерных массива A1, A2, …, AN и B1, B2, …, BN целых чисел. Определить верно ли, что эти массивы...

16
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
22.01.2012, 21:24
d13mon, а проверить-то не судьба?
http://liveworkspace.org/code/... 95c8b710f5
2
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
22.01.2012, 21:35
Цитата Сообщение от d13mon Посмотреть сообщение
Подозреваю что public
правильно подозреваете но одими подзрениями все тонкости не узнаешь всегда надо читать и проверять
1
0 / 0 / 1
Регистрация: 22.01.2012
Сообщений: 11
22.01.2012, 21:36  [ТС]
Цитата Сообщение от silent_1991 Посмотреть сообщение
d13mon, а проверить-то не судьба?
http://liveworkspace.org/code/... 95c8b710f5
Я проверял - вроде public. Вопрос в другом - почему так? Раньше я считал, что в С++ структуры и классы различаются только типом доступа к членам и полностью взаимозаменяемы, а тут такая фигня.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
22.01.2012, 21:40
d13mon, ха, т.е. когда после фигурной скобки надо менять уровни доступа - это нормально, а когда после двоеточия - это "такая фигня"?
0
0 / 0 / 1
Регистрация: 22.01.2012
Сообщений: 11
22.01.2012, 21:49  [ТС]
Цитата Сообщение от silent_1991 Посмотреть сообщение
d13mon, ха, т.е. когда после фигурной скобки надо менять уровни доступа - это нормально, а когда после двоеточия - это "такая фигня"?
Ну, это было для меня как минимум не очевидно. Встретил такую штуку в одном из вопросов в тесте на quizful.net., что меня и смутило. Ответил неправильно, думая что в код не скомпилируется из-за ошибки доступа к члену производного класса.

Может, есть и другие отличия между классами и структурами, о которых я не знаю?
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
22.01.2012, 21:52
d13mon, отличия только в уровне доступа по умолчанию, как и пишут везде. К уровню доступа по умолчанию относится как уровень доступа к членам класса, так и уровень доступа при наследовании (дайте хоть один источник, где утверждается обратное).
1
0 / 0 / 1
Регистрация: 22.01.2012
Сообщений: 11
22.01.2012, 22:02  [ТС]
Понял. Спасибо, silent_1991. Хотел досконально разобраться в этом вопросе и закрыть его для себя.
0
60 / 48 / 13
Регистрация: 12.11.2012
Сообщений: 373
Записей в блоге: 2
12.11.2012, 19:23
Меня, кстати, этот вопрос тоже волнует. Вот недавно для себя обнаружил (раньше просто не сталкивался, поэтому скорее всего это не новость), что экземпляр структуры во время присвоения, по умолчанию, копируется. А экземпляр класса нет. По крайней мере у меня так в программе получилось.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.11.2012, 19:41
НеСказочник, неверно. Оператор присваивания есть всегда, и в случае, если он не реализован явно, он выполняет простое побайтовое копирование данных из одного объекта в другой. Повторяю, структуры от классов ничем, кроме уровня доступа по умолчанию, не отличаются.

Добавлено через 17 секунд
Лучше выложите код. Посмотрим, что у вас там не копируется.
0
60 / 48 / 13
Регистрация: 12.11.2012
Сообщений: 373
Записей в блоге: 2
12.11.2012, 19:44
Я имею ввиду, что если экземпляр класса специально не клонировать, то все переменные, которым он присваивался, будут ссылаться на один и тот же экземпляр.
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
12.11.2012, 19:46
Цитата Сообщение от НеСказочник Посмотреть сообщение
Я имею ввиду, что если экземпляр класса специально не клонировать, то все переменные, которым он присваивался, будут ссылаться на один и тот же экземпляр.
Если у Вас есть динамическое выделение памяти в классе, то само собой указатели будут одинаковые.
1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
12.11.2012, 19:46
Цитата Сообщение от d13mon Посмотреть сообщение
Везде говорится, что структуры и классы отличаются только типом доступа к членам по умолчанию. А как насчет типа наследования по умолчанию? Для классов - он private, а для структур?
Это тоже тип доступа, только к членам предка. Сказано "дефолт везде паблик", значит паблик.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.11.2012, 20:28
НеСказочник, если вы возьмёте свой код и замените в нём слово class на struct, то увидите, что свойство сохраняется. Сложные данные, требующие собственной логики копирования, никогда правильно скопированы не будут, ни в структуре, ни в классе.
0
1 / 1 / 0
Регистрация: 01.08.2011
Сообщений: 8
27.07.2014, 16:49
Вопрос возник такой. Возьмём следующий код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct A
{
int a;
int b;
};
struct B : A
{
string c;
string d;
};
int main()
{
B aaa = {...};
return 0;
}
Что надо написать в фигурных скобках вместо многоточия чтобы инициализировать aaa списком инициализации?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
27.07.2014, 17:31
Цитата Сообщение от Харч Посмотреть сообщение
Что надо написать в фигурных скобках вместо многоточия чтобы инициализировать aaa списком инициализации?
В данном случае это не получится из-за наличия базового класса у типа B.
Более полный ответ тут.
0
1 / 1 / 0
Регистрация: 01.08.2011
Сообщений: 8
27.07.2014, 18:59
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.07.2014, 18:59
Помогаю со студенческими работами здесь

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

Определить, верно ли, что массивы отличаются друг от друга только порядком следования элементов
Задано два одномерных массива одинакового размера.Верно ли,что они отличаются друг от друга только порядком следования...

Считая, что два первых элемента списка соответствуют 1-му и 2-му членам арифметической прогрессии, оставить в списке только члены этой прогрессии
Всем добрый день. Преподаватель дал для решения такую задачу Дан однонаправленный список L из элементов целого типа. Считая, что два...

Foreach по членам структуры
Здравствуйте. Есть структура: struct Info { public string CompanyName { get; set; } public string...

Мнение. Что лучше Структуры или Классы?
Ребят, вопрос такой у меня возник. При решении одной и той же задачи я использовала Структуры и классы, но вот что из них лучше и...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru