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

Что значит определение класса

17.12.2023, 21:13. Показов 316. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот мне написано, допустим, такое:
Определить класс StSkills.
Член-данные: bool sportsman, bool olympiad_participant, bool contest_participant, bool scientific_publications.
Методы: конструкторы; void Input() (ввод данных с клавиатуры); void Show() (вывод данных на консоль), перегрузка оператора сравнения, GetSportsman, GetOlympiad, GetContest, GetPublications.

Это значит мне нужно просто объявить в теле класса член данные и методы?Типа такого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
{friend class Student;
  friend class Faculty;
    bool sportsman;
    bool olympiad_participant;      
    bool contest_participant;   
    bool scientific_publications;   
  public:
    StSkills();
    StSkills (const string& s); 
    void Input();
    void Show();
и т.д.
Или нужно еще и реализацию методов всех писать?Что значит "определить" класс?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2023, 21:13
Ответы с готовыми решениями:

Что значит const в конструкторе класса?
Здравствуйте, не понимаю что значит const в конструкторе класса. Встречался с const только когда он...

Что значит определить состояние класса?
Что значит определить состояние класса?

Что значит оператор * ПОСЛЕ имени класса?
в исходниках хромиума например есть такой отрывок void MarkRequestAsFailed(net::URLRequest*...

Что значит static для переменной-члена класса?
class A{ static int x; }; Что значит static для переменной-члена класса?

5
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
17.12.2023, 21:28 2
Цитата Сообщение от agusha27334 Посмотреть сообщение
нужно еще и реализацию методов всех писать?
Ну очевидно, а иначе, что там вообще делать-то?
0
0 / 0 / 0
Регистрация: 17.12.2022
Сообщений: 107
17.12.2023, 22:55  [ТС] 3
Тут дело не в том, какой с него смысл и прочее.Мне нужно прям конкретно в терминах разобраться.Разве определить класс - это не значит написать его член данные(поля) и объявить методы?А объявить класс - это просто написать class StSkills;
Разница между объявлением и определением класса(именно самого класса) нужна.В интернете смутно об этом написано.
Что вот значит объявить класс и определить его?
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
17.12.2023, 23:51 4
agusha27334, что-то я не уверен, что в русском языке терминология чёткая есть.
Смотри книгу Липпмана "C++ для начинающих", глава про классы. Там сказано, что объявить - это просто имя класса задать, а определить - это когда состав описан.
0
1659 / 488 / 106
Регистрация: 17.05.2015
Сообщений: 1,493
18.12.2023, 02:24 5
Цитата Сообщение от agusha27334 Посмотреть сообщение
Это значит мне нужно просто объявить в теле класса член данные и методы?
Да.

Цитата Сообщение от agusha27334 Посмотреть сообщение
Или нужно еще и реализацию методов всех писать?
Нет.

Цитата Сообщение от agusha27334 Посмотреть сообщение
Что значит "определить" класс?
Значит описать строение класса.
Строение класса включает в себя декларацию членов класса, идентификаторов типов, описания вложенных классов, вложенных enum, и тп.

Описание класса имеет вид:

C++
1
2
3
4
class имя 
{
    // Объявления и/или определения компонентов класса
};
А вот определение функций-членов не является обязательным для определения класса.

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


C++
1
2
3
// Можно
// Указатель не требует знать размер класса
void foo(class bar*);

C++
1
2
3
4
5
6
7
8
9
class bar;
 
class foo {
  // Нельзя
  // Так как размер класса bar не известен,
  // то компилятор не может рассчитать сколько памяти нужно выделить
  // для члена данных.
  bar b;
};
0
Вездепух
Эксперт CЭксперт С++
12785 / 6663 / 1794
Регистрация: 18.10.2014
Сообщений: 16,854
18.12.2023, 03:55 6
Цитата Сообщение от agusha27334 Посмотреть сообщение
Что значит "определить" класс?
Формально "определить класс" - это сделать именно то, что вы привели в вопросе. Определять методы для этого не нужно. Определения методов - это отдельная самостоятельная тема, к определению класса никакого отношения не имеющая.

Однако с практической точки зрения в задании "определить класс" может быть использовано в менее формальном, более широком смысле, например означать "предоставить полностью функциональный, готовый к употреблению класс". То есть подразумевать также и определение методов.
0
18.12.2023, 03:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2023, 03:55
Помогаю со студенческими работами здесь

Что значит обобщить базовый классы до некого абстрактного класса
Что значит обобщить базовый классы до некого абстрактного класса??

Что означает, что определение метода находится внутри определения класса?
Что означает, что определение метода находится внутри определения класса? Prostokat...

Что значит Handle hf? Что в эту функцию нужно передавать
мне нужно создать функцию Node * ReadNode(HANDLE hf); (Node это структура) Так вот вопрос в том...

Sleep(8000) - что значит? На что можно заменить в борланд с++?
Не распознаёт Sleep(8000) . Если за комментировать пишет что f заданно но не используется. Как...

Определение методов класса вне класса
Есть базовый класс "publication", производный от него "book" и производной от book - "type". Когда...

Что значит конструкция при создании наследуемого класса от QMainWindow
Здравствуйте, подскажите пожалуйста, создал класс mainwindow, наследуемый от QMainWindow и в...


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

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