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

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

Войти
Регистрация
Восстановить пароль
 
NEW_NAME
1 / 1 / 0
Регистрация: 04.10.2012
Сообщений: 45
#1

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

06.10.2012, 22:47. Просмотров 906. Ответов 10
Метки нет (Все метки)

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

Прототип функции в struct - C++
Добрый день форумчане. Возможно ли в структуре объявить только прототип функции, а само тело написать вне структуры?

корректен ли код void f (struct x *this);? (объявление функции) - C++
...На солидном ресурсе встретил большой код, но я его конечно упростил до минимума. struct x { int y; }; //Вот на эту...

Передачи функции имени вектора со структурой (vector+struct >> some function) - C++
Доброе время суток!! Помогите разобраться с передачей функции в качестве аргумента весь вектор со структурой Собственно пишу из...

Программа выдает ошибку при выводе структуры в функции Vyvod(int N, struct vehicle*mass) - C++
#include<iostream> #include<cstdio> #include<cstdlib> #include<fstream> #include <iomanip> using namespace std; struct...

struct - C++
Привествую ) Такой вопрос назрел ) Хочу создать переменную типа структуры: Всегда создавал так: my_struct var;

struct (с++) - C++
Кто может написать полный синтаксис структуры. Чем отличается структура от класса ? Всем ответившим высказываю свою благодарность.

Struct{...} - C++
Драсьте мне нужна помощь. Написать программу ввода и вывода студентов группы и каждый из них характеризуется фамилией и номером...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BuPy7
Нет ТЗ - давай досвидания
748 / 345 / 30
Регистрация: 01.12.2011
Сообщений: 2,042
06.10.2012, 22:50     Функции в struct #2
В безопасности.

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

NEW_NAME, тема поднималась не раз. Пользуйтесь поиском.
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
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
06.10.2012, 23:35     Функции в struct #5
При желании методы можно добавить в структуру даже просто в Си. Но не так удобно, конечно. (А наследование overrated.)
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,729
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
Нет ТЗ - давай досвидания
748 / 345 / 30
Регистрация: 01.12.2011
Сообщений: 2,042
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
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.10.2012, 19:26     Функции в struct #9
Metallnote, это не С++. Садитесь, я понял, что вы не готовы.

NEW_NAME, Получается структура в С++ - это класс?
BumerangSP
4286 / 1408 / 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
Еще ссылки по теме:

Struct{...} - C++
Задача № 1 (динамические структуры) Написать программу создания динамической структуры, заданной рисунком, с вводом элементов с...

Инициализировать **struct - C++
Доброго дня, жалко, нету темы для чайников, так что приходится заводить новую. Есть такой FTPLib, он с исходниками, но ни единого...

typedef struct - C++
Ребята, нужна помощь. Первый раз использую typedef struct. Вроде бы всё работает, но хочу удостовериться по причине: это мой уже 2-ой...

struct tagName - C++
Товарищи, подскажите пожалуйста. В MSDN определена такая структура: typedef struct tagINITCOMMONCONTROLSEX { DWORD dwSize; DWORD...

Struct в CreateThread - C++
Здравствуйте. Имеется класс game: class game { private: ball *Ball; //Объект класса ball platform *Platform; //Объект...


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

Или воспользуйтесь поиском по форуму:
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
Ответ Создать тему
Опции темы

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