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

Функции в struct - C++

Восстановить пароль Регистрация
 
NEW_NAME
1 / 1 / 0
Регистрация: 04.10.2012
Сообщений: 45
06.10.2012, 22:47     Функции в struct #1
Я даже не думал, что в struct можно объявлять функции. Представлялось так: struct - набор данных, class - уже объектное что-то, грубо выражаясь данные+методы. Оказалось не совсем так. Тогда в чем отличия, если и там и там, есть методы, наследование, конструкторы, деструкторы?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2012, 22:47     Функции в struct
Посмотрите здесь:

[c++]struct C++
C++ Struct{...}
Struct{...} C++
корректен ли код void f (struct x *this);? (объявление функции) C++
C++ struct (с++)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BuPy7
Нет ТЗ - давай досвидания
 Аватар для BuPy7
747 / 344 / 30
Регистрация: 01.12.2011
Сообщений: 2,027
06.10.2012, 22:50     Функции в struct #2
В безопасности.

Добавлено через 1 минуту
В гибкости.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
06.10.2012, 22:52     Функции в struct #3
Цитата Сообщение от Metallnote Посмотреть сообщение
В безопасности.
В гибкости.
2. Садитесь

NEW_NAME, тема поднималась не раз. Пользуйтесь поиском.
defer
秘密
 Аватар для defer
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
06.10.2012, 23:04     Функции в struct #4
C++
1
2
3
4
5
6
7
8
9
class Test
{
   private:
};
 
struct Test
{
   public:
};
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
06.10.2012, 23:35     Функции в struct #5
При желании методы можно добавить в структуру даже просто в Си. Но не так удобно, конечно. (А наследование overrated.)
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
06.10.2012, 23:38     Функции в struct #6
Цитата Сообщение от NEW_NAME Посмотреть сообщение
Тогда в чем отличия,
в классе по умолчанию все элементы приватные
в структуре по умолчанию публичные
о чем и пытался сказать defer
NEW_NAME
1 / 1 / 0
Регистрация: 04.10.2012
Сообщений: 45
07.10.2012, 17:37  [ТС]     Функции в struct #7
Так все отличия в доступности элементов по умолчанию?

Добавлено через 4 минуты
Цитата Сообщение от soon Посмотреть сообщение
2. Садитесь

NEW_NAME, тема поднималась не раз. Пользуйтесь поиском.
Попробовал. Ничего не нашел. Так что, если не трудно, прошу написать.
BuPy7
Нет ТЗ - давай досвидания
 Аватар для BuPy7
747 / 344 / 30
Регистрация: 01.12.2011
Сообщений: 2,027
07.10.2012, 18:35     Функции в struct #8
Структуры и классы отличаются следующими особенностями.
• Структуры являются типами значений; классы — ссылочными типами.Переменная типа структуры, в отличие от типа класса, содержит данные структуры, а не ссылки на данные.
• Структуры используют выделенную память стека; классы — память кучи.
• Все элементы структуры по умолчанию являются Public; переменные и константы класса по умолчанию — Private, а другие элементы класса по умолчанию являются Public.Такое поведение элементов класса обеспечивает совместимость с системой значений по умолчанию Visual Basic 6.0.
• Структуры должны иметь хотя бы одну переменную или элемент события без общего доступа; класс может быть совершенно пустым.
• Элементы структуры не могут быть объявлены как Protected; члены класса могут.
• Процедура структуры может обрабатывать событие, только если она является процедурой Shared (Visual Basic)Sub, и только с помощью оператора Оператор AddHandler; любая процедура класса может обработать событие, используя либо ключевое слово Предложение Handles (Visual Basic), либо оператор AddHandler.Дополнительные сведения см. в разделе События (Visual Basic).
• В объявлениях переменных структуры не могут быть заданы инициализаторы или исходные размеры массивов, но это возможно в объявлениях переменных класса.
• Структуры неявно наследуют от класса System.ValueType и не могут наследовать ни от какого другой типа; классы могут наследовать от любых классов, отличных от System.ValueType.
• Структуры не наследуются; классы наследуются.
• Структуры никогда не завершаются, т. е. среда CLR никогда не вызывает метод Finalize для структур; классы завершаются при помощи сборщика мусора, который вызывает метод Finalize для класса, когда обнаруживает, что не осталось активных ссылок.
• Для структуры не требуется конструктор; для класса требуется.
• Структуры могут иметь конструкторы, не являющиеся общими, только если они принимают параметры; классы могут иметь их как с параметрами, так и без. Каждая структура имеет неявный открытый конструктор без параметров.Этот конструктор инициализирует все элементы данных структуры с их значениями по умолчанию.Это поведение переопределить невозможно.

Источник: http://supremecommander2.narod.ru/10.html
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.10.2012, 19:26     Функции в struct #9
Metallnote, это не С++. Садитесь, я понял, что вы не готовы.

NEW_NAME, Получается структура в С++ - это класс?
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
07.10.2012, 20:32     Функции в struct #10
NEW_NAME, struct уже давно убрать хотели, однако оставили из-за совместимости с Си.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2012, 20:51     Функции в struct
Еще ссылки по теме:

C++ struct
C++ Struct в CreateThread
Protected Struct C++

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

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
07.10.2012, 20:51     Функции в struct #11
Цитата Сообщение от NEW_NAME Посмотреть сообщение
Я даже не думал, что в struct можно объявлять функции. Представлялось так: struct - набор данных, class - уже объектное что-то, грубо выражаясь данные+методы. Оказалось не совсем так. Тогда в чем отличия, если и там и там, есть методы, наследование, конструкторы, деструкторы?
На плюсах struct есть класс с дефолтно-пабликовыми членами.

Добавлено через 2 минуты
Цитата Сообщение от Metallnote Посмотреть сообщение
Все элементы структуры по умолчанию являются Public; переменные и константы класса по умолчанию — Private, а другие элементы класса по умолчанию являются Public.
Бред. В классе всё по дефолту привэйт.

Добавлено через 1 минуту
Цитата Сообщение от Metallnote Посмотреть сообщение
Структуры должны иметь хотя бы одну переменную или элемент события без общего доступа; класс может быть совершенно пустым.
Бред. В большинстве структур нет модификаторов видимости вообще, что не отменяет их валидности.

Добавлено через 1 минуту
Цитата Сообщение от Metallnote Посмотреть сообщение
Процедура структуры может обрабатывать событие, только если она является процедурой Shared (Visual Basic)Sub, и только с помощью оператора Оператор AddHandler; любая процедура класса может обработать событие, используя либо ключевое слово Предложение Handles (Visual Basic), либо оператор AddHandler.Дополнительные сведения см. в разделе События (Visual Basic)
А бейсик то здесь при чём?

Добавлено через 1 минуту
Цитата Сообщение от Metallnote Посмотреть сообщение
В объявлениях переменных структуры не могут быть заданы инициализаторы или исходные размеры массивов, но это возможно в объявлениях переменных класса.
Размер массива любого базового типа может быть указан сразу в декларации в квадратных скобках.

Добавлено через 1 минуту
Цитата Сообщение от Metallnote Посмотреть сообщение
Структуры никогда не завершаются, т. е. среда CLR никогда не вызывает метод Finalize для структур; классы завершаются при помощи сборщика мусора, который вызывает метод Finalize для класса, когда обнаруживает, что не осталось активных ссылок.
На плюсах вообще нет самого понятия финализатора.

Добавлено через 1 минуту
Цитата Сообщение от Metallnote Посмотреть сообщение
Для структуры не требуется конструктор; для класса требуется.
Класс может не иметь явных конструкторов.

Добавлено через 1 минуту
Цитата Сообщение от Metallnote Посмотреть сообщение
Структуры могут иметь конструкторы, не являющиеся общими, только если они принимают параметры; классы могут иметь их как с параметрами, так и без. Каждая структура имеет неявный открытый конструктор без параметров.Этот конструктор инициализирует все элементы данных структуры с их значениями по умолчанию.Это поведение переопределить невозможно.
На плюсах нет самих понятий общего и не общего конструктора.
Yandex
Объявления
07.10.2012, 20:51     Функции в struct
Ответ Создать тему
Опции темы

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