Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/40: Рейтинг темы: голосов - 40, средняя оценка - 4.80
 Аватар для kalonord
28 / 28 / 5
Регистрация: 27.01.2014
Сообщений: 784

Объявление класса и элемент-функции

31.12.2014, 21:13. Показов 8047. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Имеется следующий исходный код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// определить класс GradeBook  с элемент-функцией displayMessage;
// создать обхект GradeBook и вызвать его функцию displayMessage.
 
#include <iostream>
using namespace std;
 
// определение класса GradeBook
class GradeBook
{
public: 
    // функция, выводящая приветствие пользователю GradeBook
    void displayMessage()
    {
        cout << "Welcome to the GradeBook!" << endl;
        system("pause");
    } // конец функции displayMessage
}; // конец класса GradeBook
 
// функция main начинает исполнение программы
int main()
{
    GradeBook myGradeBook; // создать GradeBook с именем myGradeBook
    myGradeBook.displayMessage(); // вызвать displayMessage объекта
    return 0; // показывает успешное завершение
}
Я напишу то, как я думаю, поправьте, если не так.
Вначале определяем класс, который будет носить имя GradeBook, дальше делаем элемент-функцию displayMessage публичной, чтобы функция main её могла создать и запустить? Почему мы пишем void, а не int - потому что это элемент-функция, а не просто функция? void - возвращаемый тип функции, функция не возвратит никакого значения своей вызывающей функции main(какое еще такое значение? что вообще может возвращаться или наоборот?). С этими возвращаемыми типами я совсем запутался, я лишь знаю, что тип переменной int - это тип, с помощью которого мы можем использовать только целые числа, тогда зачем приписываем int функции main?
Дальше мы пишем GradeBook myGradeBook; - то есть мы классу GradeBook присваиваем идентификатор myGradeBook? Но зачем, разве не понятно, с чем работает функция из названия GradeBook? Дальше, как написано в комментарии "вызвать displayMessage объекта". - здесь я совсем поплыл.

В общем, со временем, думаю, я смогу всё это разрулить, но если вы мне поможете в этом, буду только рад.

Добавлено через 9 минут
Цитата Сообщение от kalonord Посмотреть сообщение
Дальше мы пишем GradeBook myGradeBook; - то есть мы классу GradeBook присваиваем идентификатор myGradeBook?
Насколько я понял, мы создаем объект myGradeBook класса GradeBook. Нашел такое сравнение, что класс - это как чертеж, а объект - это то... в общем, это что-то.

Арр, я плаваю в этом, надо выучить терминологию. Просто в начале я тупо смотрел на исходник и вроде всё понятно, а тут началось...
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.12.2014, 21:13
Ответы с готовыми решениями:

Объявление функции другом класса
Объявил функцию другом класса и в функции обращаюсь к закрытым данным класса,но почему-то не получается из-за того,что нет доступа к...

объявление и определение функции класса
почему не компилируется #include &lt;iostream&gt; int main(){ class A { public: A(); // объявление конструктора

Объявление функции возможно только для объявленного класса?
Был очевидцем обьявления функции объявленного класса типа // lol.h #ifndef LOL_H #define LOL_H class simpleClass; //...

3
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
31.12.2014, 21:54
Кликните здесь для просмотра всего текста
kalonord, объект пользовательского класса -- это что-то вроде переменной какого-то типа. Класс -- это тип, объект -- переменная. Зачем нужны объекты класса? Ну если создают машину, ее ведь не в едином экземпляре создадут, а в каком-то "тираже". Если поможет, можешь назвать тот объект "журналДесятогоБэКласса". У каждого школьного класса есть свой журнал, значитъ, каждому нужен свой объект.

Про функции. Функции должны что-то возвращать. Например, функция pow( double a, double b ) берет число а и возводит его в степень b. В результате получается какое-то число, и его-то функция и возращает.
Функция также может ничего и не возвращать. Тогда она просто выполняет какое-то действие, для удобства запихнутое в нее. Например, красиво выводить данные в табличку в консоли. Возвращать по идее здесь ничего не нужно ведь, значит, функция будет иметь тип void.
В общем, если пишешь математическую функцию (которая складывает, умножает, делит и т.п.), то скорей всего она будет возвращать что-то, значит, описывай какой-нибудь тип (при сложении целых чисел дробь выйти не может, следовательно, возвращать она будет число в int. При делении же может получиться дробь, значит, нужно писать возвращаемый тип как double). В противном случае пиши void.
2
 Аватар для kalonord
28 / 28 / 5
Регистрация: 27.01.2014
Сообщений: 784
31.12.2014, 22:22  [ТС]
Цитата Сообщение от tnk500 Посмотреть сообщение
В результате получается какое-то число, и его-то функция и возращает.
Куда она возвращает это число?

Добавлено через 21 минуту
Сейчас не списывал с учебника, написал код сам по памяти, напоролся на то, что не сделал элемент-функцию публичной. В общем, осталось только разобраться с "int" и "void". А вот вопрос на счет объекта, который мы создаем: Создал объект, он выполняется. То есть, создаем класс, потом создаем объект класса, который содержит эти всякие элемент-функции и который может выполняться(а точнее, как я понял, вызываются элемент-функции этого объекта). Для чего это? Чтобы грубо говоря "распилить" работу программы на части? Допустим, нужно чтобы программа вывела текст, потом что-нибудь посчитала - для этого можно создать 2 класса, в которых будет по одной элемент-функции, которые будут вызываться функцией main и выполняться? Или в одном классе создаем 2 объекта, которые имеют по одной элемент-функции, в будущем которые будут выполняться?

Добавлено через 1 минуту
В общем, сейчас буду шаманить
0
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
31.12.2014, 22:24
kalonord, например, здесь:
C++
1
2
3
4
5
6
7
8
double sqr( double x )
{
   return x * x;
}
...
cout << "Квадрат 4": << sqr(4.0)
<< "\nКвадрат 21.63:" << sqr( 21.63 )
<< "\nКвадрат переменной b:" << sqr( b ) << endl;
Ты пишешь функцию в выходящем тексте, а она на экран выведет квадат чисел в скобках. Просто сначала переменные подставляются в функцию, расчитывается квадрат, и этот квадрат компилятор будет считать за возвращаемое значение. Поэтому вместо текста "sqr(4.0)" ты увидишь квадрат 4, то есть 16.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.12.2014, 22:24
Помогаю со студенческими работами здесь

Объявление класса, создание объекта и вызов функции-члена
Всем добрый день! Вот так я объявляю класс. typedef map&lt;string, double&gt; datablock; typedef map&lt;string, string&gt; groupvars;...

Изменение статического закрытого элемента данных класса посредством статической элемент-функции класса
Добрый день. Не могу разобраться, как изменить закрытую статическую переменную класса. Вот код. Ошибка &quot;unresolved external&quot;. ...

Раздельное объявление и описание шаблонной функции, принимающей в качестве операндов ссылку на объект класса "вектор"
Приветствую. Есть код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;vector&gt; #include &lt;iterator&gt; ...

Объявление объекта класса fstream в качестве статической компоненты другого класса
Доброго времени суток. Есть задание, в котором говорится &quot;...Перепишите программы из упражнений 4 и 6 таким образом, чтобы использовать...

Создать объявление класса и разработать программу-драйвер, которая продемонстрирует работу класса.
Класс Triangle (треугольник). Класс хранит Декартовы координаты трех углов треугольника. Конструктор принимает три группы координат. Должны...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru