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

Чем struct отличается от class?

08.04.2015, 17:21. Показов 8646. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Чем отличаются эти ключевые слова кроме public/private по умолчанию?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.04.2015, 17:21
Ответы с готовыми решениями:

Односвязный список: В чём разница между struct и class?
После неудач работы с Vector, а так же отсутствия (Хотя, скорее всего, я просто плохо искал) хорошей русской документации по нему, решил...

error C2228: left of '.add' must have class/struct/union type. в чем ошибка?
Помогите понять в чем ошибка. Пасиб. #include <iostream.h> class book { private: char name_book; char name_avtor; ...

Struct VS Class
Здравствуйте. Я прочел интересную статью http://www.rsdn.ru/article/cpp/ObjectsAndPointers.xml#EVPAC по использованию памяти для...

22
1 / 1 / 4
Регистрация: 23.09.2014
Сообщений: 11
08.04.2015, 17:24
почитай про ООП.

в class можно функции реализовать.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
08.04.2015, 17:30
Лучший ответ Сообщение было отмечено Ilot как решение

Решение

Цитата Сообщение от pety Посмотреть сообщение
Чем отличаются эти ключевые слова кроме public/private по умолчанию?
Больше ничем. Только нужно не забывать, что при наследовании также работает правило про public/private.
0
 Аватар для Yanush
162 / 158 / 62
Регистрация: 28.09.2013
Сообщений: 293
08.04.2015, 17:30
Лучший ответ Сообщение было отмечено Ilot как решение

Решение

Класс от структуры по сути отличается только спецификатором доступа по-умолчанию: в структуре это public, в классе - private.
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
08.04.2015, 17:31
bilinin, а вот и нет. Структуре тоже можно определять методы. А единственное отличие - у структуры поля по умолчанию - public, а вот у класса - private

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
struct abc {
  void a() { }
  abc() {}   
};
 
class def {
  void a() { }
  public: def() {}
};
 
int main (){
  abc a;
  def b;
  
  a.a(); // Всё путём
  b.a(); // Не всё путём   
}
0
1 / 1 / 0
Регистрация: 11.12.2014
Сообщений: 116
08.04.2015, 19:42  [ТС]
bilinin,Вот именно что почитал, функцию можно определить и как член структуры
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
struct hello
{
    const char* hi = "hello";
    void print(){
         cout << hi;
    }
};
 
int main()
{
    helo aaa;
    aaa.print();
}
Добавлено через 1 минуту
Упс... это уже написали

Добавлено через 2 часа 6 минут
А можно объявить friend функцию как член структуры?

Добавлено через 1 минуту
И можно ли определять конструкторы?
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
08.04.2015, 19:55
Цитата Сообщение от pety Посмотреть сообщение
А можно объявить friend функцию как член структуры?
Добавлено через 1 минуту
И можно ли определять конструкторы?
Ответ в посте 3.
0
1 / 1 / 0
Регистрация: 11.12.2014
Сообщений: 116
09.04.2015, 01:42  [ТС]
ясно
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
09.04.2015, 02:01
добавлю еще 1 различие: "семантика"
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
09.04.2015, 02:16
Цитата Сообщение от pety Посмотреть сообщение
И можно ли определять конструкторы?
Туда именно для этого - конструкторов деструкторов и операторов и добавили возможность методы встраивать.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
09.04.2015, 12:23
Цитата Сообщение от Kastaneda Посмотреть сообщение
Больше ничем.
Зависит от контекста. Например нельзя написать так:
C++
1
template <struct T> void f() {}
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2222 / 1424 / 419
Регистрация: 16.05.2013
Сообщений: 3,642
Записей в блоге: 6
09.04.2015, 12:32
Цитата Сообщение от Tulosba Посмотреть сообщение
Зависит от контекста. Например нельзя написать так:
Строго говоря правильнее использовать ключевое слово typename. Возможность использования кл. слова class скорее связанна с историческими причинами, а не отличием в поведении class и struct. Ведь в качестве аргумента шаблона можно на равне с классом передавать и структуру и различий между ними будет не более чем ноль.
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
09.04.2015, 12:37
Принято структуры использовать для связанного набора данных, а классы для реализации объектов.
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
09.04.2015, 12:49
Цитата Сообщение от Ilot Посмотреть сообщение
Строго говоря правильнее использовать ключевое слово typename.
Это опять таки очень зависит от контекста, например при явном инстанцировании шаблона можно писать и class, и struct, но нельзя typename:
C++
1
2
3
4
5
template <typename T> class C {};
 
template class C<double>; // ok
template struct C<int>; // ok
template typename C<float>; // fail
Короче говоря, куча нюансов. Можно ещё и "шаблонные шаблоны" (template template) вспомнить.
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2222 / 1424 / 419
Регистрация: 16.05.2013
Сообщений: 3,642
Записей в блоге: 6
09.04.2015, 12:52
Цитата Сообщение от Tulosba Посмотреть сообщение
Можно ещё и "шаблонные шаблоны" (template template) вспомнить.
Не нужно ибо мы говорим о, цитата:
Чем struct отличается от class?
0
1 / 1 / 0
Регистрация: 11.12.2014
Сообщений: 116
14.04.2015, 02:42  [ТС]
Цитата Сообщение от Ilot Посмотреть сообщение
Не нужно ибо мы говорим о, цитата:
Чем struct отличается от class?
Именно, имелось ввиду отличие с ТОЛЬКО точки зрения ООП, шаблоны уже другая тема

Добавлено через 9 минут
Цитата Сообщение от MrGluck Посмотреть сообщение
Принято структуры использовать для связанного набора данных, а классы для реализации объектов.
Ну я сначала так и подумал, видимо правильно
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
14.04.2015, 08:21
Добавлю еще 5 копеек:
C++
1
2
3
4
5
6
7
struct child : derived // public-наследование.
{
};
 
class child : derived // private-наследование.
{
};
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
14.04.2015, 13:20
Цитата Сообщение от Убежденный Посмотреть сообщение
Добавлю еще 5 копеек:
Уже было
Цитата Сообщение от Kastaneda Посмотреть сообщение
при наследовании также работает правило про public/private.
0
1 / 1 / 0
Регистрация: 26.09.2015
Сообщений: 2
29.01.2016, 23:32
Дело лишь в одном... объекты типа class - ссылочные (хранят значения полей в куче), а
объекты типа struct - значимые (хранят значения полей в объекте (как одним контейнером))
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
29.01.2016, 23:40
Цитата Сообщение от Upversus Посмотреть сообщение
объекты типа class - ссылочные (хранят значения полей в куче), а
объекты типа struct - значимые (хранят значения полей в объекте (как одним контейнером))
Че за бред?
Как напишешь, так и будет.
C++
1
2
3
4
5
6
7
8
class Test
{
   HeyObject x ;
   TryAgain y ;
};
 
//...
Test t ;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.01.2016, 23:40
Помогаю со студенческими работами здесь

Class vs Struct
класс или структура что создаётся быстрее? перегружаются ли конструкторы структуры? если существуют (не уверен) сколько занимают в...

Struct vs class
В С да и С++ мы можем реализовать стек следующим образом: #ifndef _STACK_H #define _STACK_H #include &lt;stdlib.h&gt; ...

Перевод с Struct в Class
Помогите пожалуйста в данной программе из структур сделать классы Вот код: #include &lt;iostream&gt; #include &lt;vector&gt; ...

Перевод с Struct в Class
Помогите пожалуйста в данной программе из структур сделать классы Вот код: #include &lt;iostream&gt; using namespace std; ...

Сравнительная характеристика struct и class
Всем доброго дня! Решил сравнить работу структур с классами. В функцию func(Trainee Vania) передаю обьект структуры Trainee как...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru