Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

Прототип функции в 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++
Драсьте мне нужна помощь. Написать программу ввода и вывода студентов группы и каждый из них характеризуется фамилией и номером...

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

10
BuPy7
Нет ТЗ - давай досвидания
730 / 357 / 35
Регистрация: 01.12.2011
Сообщений: 2,148
06.10.2012, 22:50 #2
В безопасности.

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

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

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

NEW_NAME, тема поднималась не раз. Пользуйтесь поиском.
Попробовал. Ничего не нашел. Так что, если не трудно, прошу написать.
0
BuPy7
Нет ТЗ - давай досвидания
730 / 357 / 35
Регистрация: 01.12.2011
Сообщений: 2,148
07.10.2012, 18:35 #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
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.10.2012, 19:26 #9
Metallnote, это не С++. Садитесь, я понял, что вы не готовы.

NEW_NAME, Получается структура в С++ - это класс?
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
07.10.2012, 20:32 #10
NEW_NAME, struct уже давно убрать хотели, однако оставили из-за совместимости с Си.
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
07.10.2012, 20:51 #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 Посмотреть сообщение
Структуры могут иметь конструкторы, не являющиеся общими, только если они принимают параметры; классы могут иметь их как с параметрами, так и без. Каждая структура имеет неявный открытый конструктор без параметров.Этот конструктор инициализирует все элементы данных структуры с их значениями по умолчанию.Это поведение переопределить невозможно.
На плюсах нет самих понятий общего и не общего конструктора.
0
07.10.2012, 20:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2012, 20:51
Привет! Вот еще темы с ответами:

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

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

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

Программа по Struct - C++
Создать Массив структур с именем Sotrudnik, содержащих следующие поля: 1. Табельный номер сотрудника. 2. ФИО сотрудника. 3....


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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