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

Что может быть элементом структуры?

25.12.2014, 14:44. Показов 1564. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста с вопросом,самому полного ответа не удалось найти.

Что из перечисленого не может быть елементом структуры?
1)Структура этого же типа
2)Указатель на структуру этого же типа
3)Функция
4)Указатель на функцию
5)Прототип функции
6)объединение
7)перечисление

Зарание благодарю.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.12.2014, 14:44
Ответы с готовыми решениями:

Может ли областью видимости структуры быть тело метода класса?
Может ли областью видимости структуры быть тело метода класса?

скажите что такое может быть?
у меня Dev-C++ работает всё нормально,но когда компилирую любую программу выходит чёрный экран а на...

подчеркивает запятую после 50, что это может быть?
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <conio.h> #include...

Что может быть быстрее, чем math sqrt?
Передо мной стоит задача: Мне необходимо максимально быстро найти количество целых квадратных...

18
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
25.12.2014, 15:52 2
Мне кажется, что 2,3,4 и 6
0
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
25.12.2014, 16:00 3
van4esco, только первый вариант нельзя (будет incomplete type). Остальное все может.
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
25.12.2014, 16:08 4
Цитата Сообщение от zss Посмотреть сообщение
Мне кажется, что 2,3,4 и 6
Перечисление тоже может, а функция-член - это в классе. Хотя c++ не особо и различает на этом языке структура от класса отличается только дефолтным public.
0
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
25.12.2014, 16:09 5
Цитата Сообщение от DrOffset Посмотреть сообщение
только первый вариант нельзя (будет incomplete type). Остальное все может.
Можно пример для варианта 3 и 5?
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
25.12.2014, 16:11 6
Прототип не может быть членом чего либо, так как прототип - это чисто синтаксическая конструкция, предупреждающая компилятор, что такая то функция существует, будет где то впереди и следует разрешить её вызовы, а не самостоятельная сущность. Даже если функция-член не имеет реализации, то есть чисто виртуальна, членом всё равно является сама функция, а не прототип.
0
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
25.12.2014, 16:27 7
Цитата Сообщение от S_el Посмотреть сообщение
Можно пример для варианта 3 и 5?
C++
1
2
3
4
5
6
7
8
9
struct f
{
    typedef void foo_t(int);
 
    static void foo1();
    void foo2(); 
 
    foo_t foo3; 
};
Если не вдаваться в терминологические споры, фактически варианты 3 и 5 в С++ идентичны.
1
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
25.12.2014, 16:39 8
Цитата Сообщение от taras atavin Посмотреть сообщение
Перечисление тоже может
Экземпляр перечисления - да, а само перечисление нет.
0
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
25.12.2014, 16:49 9
Цитата Сообщение от zss Посмотреть сообщение
Экземпляр перечисления - да, а само перечисление нет.
Это почему?
Nested type никто не отменял.
Вот.
2
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
25.12.2014, 16:58 10
Так оно же не становится членом структуры.
Это все равно, что объявление функции или структуры.
Оно место в памяти не занимает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <conio.h>
struct A
{
    int n;
    enum InternalEnum
    {
        a,b,c,d
    };
};
 
int main()
{
    A a;
    std::cout<<sizeof(a);
    _getch();
    return 0;
}
Вывод:
4
А вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <conio.h>
enum InternalEnum
{
  a,b,c,d
};
struct A
{
    int n;
    InternalEnum x;
};
 
int main()
{
    A a;a.x=d;
    std::cout<<sizeof(a);
    _getch();
    return 0;
}
Ответ уже будет
8
0
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
25.12.2014, 17:01 11
Цитата Сообщение от zss Посмотреть сообщение
Так оно же не становится членом структуры.
Ясное дело не становится. Но, насколько я понял, в вопросе именно про члены ни слова. Там говорится про элементы, а это более широкое понятие.
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
25.12.2014, 18:00 12
Цитата Сообщение от zss Посмотреть сообщение
Экземпляр перечисления - да, а само перечисление нет.
В смысое экземпляр? Это же не класс, значения не имеют индивидуальности.

Добавлено через 38 секунд
Цитата Сообщение от DrOffset Посмотреть сообщение
сное дело не становится. Но, насколько я понял, в вопросе именно про члены ни слова. Там говорится про элементы, а это более широкое понятие.
Элементы бывают в массивах и это понятие как раз уже.
0
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
25.12.2014, 18:28 13
Цитата Сообщение от taras atavin
Элементы бывают в массивах
Т.е. в структуре элементов быть не может, я правильно тебя понял?
Ну давай в таком случае объявим вопрос некорректным и разойдемся.
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
25.12.2014, 18:34 14
Цитата Сообщение от taras atavin Посмотреть сообщение
значения не имеют индивидуальности
А это разве не индивидуальность:
Цитата Сообщение от zss Посмотреть сообщение
struct A
{
int n;
InternalEnum x;
};
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
25.12.2014, 18:49 15
Цитата Сообщение от zss Посмотреть сообщение
Так оно же не становится членом структуры.
Цитата Сообщение от zss Посмотреть сообщение
Оно место в памяти не занимает:
Метод класса тоже место в памяти не занимает, от этого он не перестаёт быть членом класса.
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
25.12.2014, 18:52 16
Цитата Сообщение от lss Посмотреть сообщение
Метод класса тоже место в памяти не занимает
Занимает, правда одно на все экземпляры класса.
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
25.12.2014, 18:54 17
Цитата Сообщение от zss Посмотреть сообщение
А это разве не индивидуальность:
Цитата Сообщение от zss Посмотреть сообщение
struct A
{
int n;
InternalEnum x;
};
C++
1
2
3
4
5
6
7
8
9
enum Col(red, blue, gereen);
void f (Col c);
...
Col x;
Col y;
x=Red;
y=Red;
f(x);
f(y);
Ну ка как функции различить два последних вызова? Значение одно, всё, достаточно, остальное пофиг и вообще не известно. И сравните с
C++
1
2
3
4
5
6
7
8
9
10
class A
{
 ...
 void f();
};
...
A a;
A b;
a.f();
b.f();
, вызовы различаются значением this, даже если все поля совпадают, объекты различимы всё равно.
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
25.12.2014, 18:55 18
Цитата Сообщение от zss Посмотреть сообщение
Занимает, правда одно на все экземпляры класса.
Зачем такое пишешь? Ты же разговор ведёшь о памяти объекта:
Цитата Сообщение от zss Посмотреть сообщение
C++
1
2
A a;
std::cout<<sizeof(a);
Цитата Сообщение от zss Посмотреть сообщение
C++
1
2
A a;a.x=d;
std::cout<<sizeof(a);
1
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
25.12.2014, 20:11 19
Вот что нашел ( не читал книгу Пахомова, но думаю, что он прав):
https://books.google.ru/books?... ры&f=false

P.S. Вроде тег url поставил, но почему-то ссылки нет
0
25.12.2014, 20:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2014, 20:11
Помогаю со студенческими работами здесь

Бинарные файлы и компьютеры. Что может быть романтичнее?
Товарищи программисты! Сегодня на моем пути возникла следующая проблема: код проскакивает чтение...

Подскажите, где может быть ошибка (структуры)? (скорее всего где-то амперсенд нужен, все вроде проверил)
написать универсальный тип, который представляет точку на плоскости в координатах (х, у) и в...

Динамические структуры данных: Найти скалярное произведение строки с наибольшим элементом и столбца с наименьшим элементом
1. Дана матрица размера N* N (N&lt;=160). Найти скалярное произведение строки с наибольшим элементом и...

Структуры: вывести данные о старших по возрасту студентах, предполагая, что год рождения может быть одинаков
РАБОТА С СТРУКТУРОЙ .Дана информация о студентах. Запись имеет вид: фамилия, год рождения, место...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru