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

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

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

Виртуальный класс и перегрузка оператора - C++

03.06.2012, 08:02. Просмотров 565. Ответов 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include <iostream>
#include <iomanip>
using namespace std;
using std::cout;
using std::cin;
using std::endl;
#include <string.h>
#include <conio.h>
 
    char fam[32]; 
    char imya[32];
    char otch[32];
    // Глобальные переменные
class science
{ // Объявление класса "Наука"
public:
    science(char *,int,char *,char *,char *,int);
    // Конструктор
    science(char *,int,char *,char *,char *);
    // Перегрузка конструктора
    ~science();
    // Деструктор
    void show_science(void);
private:
 
    char name[32];
    int hour;   
    char bias[32];
    char cathedra[32];
    int rgr;
    char report[32];
};
science::science(char *name, int hour, char *bias, char *cathedra,char *report,int rgr) // Конструктор класса science
{
    strcpy(science::name, name);
    science::hour=hour;
    strcpy(science::bias, bias);
    strcpy(science::cathedra, cathedra);
    strcpy(science::report, report);
    if(rgr<1) cout << "It is not enough work to pass the subject"<<endl;
    else science::rgr=rgr;
};
science::science(char *name, int hour, char *bias, char *cathedra,char *report) // Перегружаем конструктор класса science
{
    strcpy(science::name, name);
    science::hour=hour;
    strcpy(science::bias, bias);
    strcpy(science::cathedra, cathedra);
    strcpy(science::report, report);
    do
    {
        cout<<"Enter the number of RGR|RGZ|TPR"<<rgr;
        cin>>science::rgr;
    } while(rgr>=1);
};
void science::show_science(void) // Функция вывода класса science
{
    cout <<"Name of discipline:  "<<name<<endl;
    cout <<"The number of hours allocated:  "<<hour<<endl;
    cout <<"The direction of discipline:  "<<bias<<endl;
    cout <<"Department of Disciplines:  "<<cathedra<<endl;
    cout <<"Number of RGR|RGZ|TPR on discipline:  "<<rgr<<endl;
    cout <<"Type of exam:  "<<report<<endl;
}
 
 
science::~science() // Декструктор класса science
{
    cout<<"The destruction of the object to"<<name<<endl;
}
 
class teacher : public science 
    // Производный класс teacher от класса science, простое наследование
{
public:
    teacher(char *, char *, char *, char *,int,char *,char *,char *,int);
    void show_teacher(void);
private:
    char last_name[32];
    char main_name[32];
    char middle_name[32];
};
teacher::teacher(char *last_name, char *main_name, char *middle_name, char *name, int hour, char *bias, char *cathedra, char *report, int rgr) : science(name, hour, bias, cathedra,report,rgr)
    // Конструктор для производного класса teacher
{
    strcpy(teacher::last_name, last_name);
    strcpy(teacher::main_name, main_name);
    strcpy(teacher::middle_name, middle_name);
        
}
void teacher::show_teacher(void) // Функция вывода подкласса teacher 
{
    show_science();
    cout <<"Last name of teacher:  "<<last_name<<endl;
    cout <<"Name of teacher:  "<<main_name<<endl;
    cout <<"Middle name of teacher:  "<<middle_name<<endl;
    cout <<""<<endl;
}
void userfromkeyboards(void) // Функция ввода пользователем фамилии, имени и отчества преподавателя дисциплины
{
    cout<<"Last_name: ";
    cin>>fam;
    cout<<"Main_name: ";
    cin>>imya;
    cout<<"Middle_name: ";
    cin>>otch;
}
void main(void)
{   
    cout<<setw(6)<<"Disciplines for the exam in the 2nd semester"<<endl;
    cout <<""<<endl;
 
    cout<<"Enter last name, main name, middle name of Mathematic Teacher"<<endl;
    userfromkeyboards();
    teacher mathematic(fam, imya, otch, "Mathematic", 288, "Technical", "IM", "Ekzamen", 1);
    
    cout<<"Enter last name, main name, middle name of Physics Teacher"<<endl;
    userfromkeyboards();
    teacher physics(fam, imya, otch,"Physics", 288, "Technical", "OF", "Ekzamen", 2);
 
    cout<<"Enter last name, main name, middle name of Informatic Teacher"<<endl;
    userfromkeyboards();
    teacher informatic(fam, imya, otch, "Informatic", 144, "Technical", "VT", "Ekzamen", 1);
    
    cout<<"Enter last name, main name, middle name of Special chapters of mathematics Teacher"<<endl;
    userfromkeyboards();
    teacher special_mathematics(fam, imya, otch, "Special chapters of mathematics", 288, "Technical", "ZI", "Ekzamen", 2);
    cout <<""<<endl;
    
    mathematic.show_teacher();
    physics.show_teacher();
    informatic.show_teacher();
    special_mathematics.show_teacher();
    getch();
}
Добавлено через 3 часа 48 минут
вроде с виртуальным классом разобрался, все легко( но с перегрузкой что-то вообще проблемы, помогите( в пн сдавать уже

Добавлено через 12 часов 14 минут
все еще актуально
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2012, 08:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Виртуальный класс и перегрузка оператора (C++):

Класс Матрица, перегрузка оператора *= - C++
matrix&amp; matrix :: operator *= (const matrix&amp; x1) { if( СhM(x1) ) //СhM - проверка на возможность умножения двух матриц { ...

Класс "Матрица". Перегрузка оператора "минус" - C++
Помогите дописать программу или исправить ее. Нужно было написать программу, где создать класс матрицы, используя двухмерный динамический...

Класс "Дробь". Перегрузка оператора "==" - C++
template &lt;class T&gt; void polynomial&lt;T&gt;::refresh(){ //отбрасывающую старшие члены полинома с нулевыми коэффициентами int counter = 0;...

Класс "Матрица", перегрузка оператора "+" - C++
Здравствуйте. Создаю класс матрица, в нём перегружаю оператор &quot;+&quot;. На этапе компиляции всё замечательно, но при запуске программа вылетает....

Перегрузка оператора << - C++
Код класса: #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;cassert&gt; #ifndef ARRAY_H #define ARRAY_H template&lt; class...

Перегрузка оператора += - C++
реализую класс собственных строк называеться MyString вылетает при использовании оператора += самое интересное что если дебажишь код по...

3
Ilyawow
24 / 24 / 5
Регистрация: 18.11.2011
Сообщений: 266
03.06.2012, 09:02 #2
Цитата Сообщение от Inconflict Посмотреть сообщение
Собственно немного разобравшись в ооп написал небольшой код, по заданию нужно как-то прикрутить к нему виртуальный класс и сделать перегрузку оператора, хелпаните)
Вы бы сказали ,что делает то, что вы уже написали . А то сиди разбирай что? где? и как ?
0
diga
6 / 6 / 1
Регистрация: 30.03.2012
Сообщений: 111
03.06.2012, 09:45 #3
я не стал разбираться но вам нужно в классе объявить виртуальную функцию, типо
C++
1
friend science operator (тут перегрузка оператора) (science, science);
и реализация
C++
1
2
3
4
5
6
7
8
science operator * (science Rad1, science Rad2)
{
    science Rad3;
    ///
 ...
////
    return Rad3;
}
0
Inconflict
0 / 0 / 0
Регистрация: 30.05.2012
Сообщений: 7
03.06.2012, 20:37  [ТС] #4
Цитата Сообщение от Ilyawow Посмотреть сообщение
Вы бы сказали ,что делает то, что вы уже написали . А то сиди разбирай что? где? и как ?
По факту ничего, программа для освоения ООП, имеется класс и подкласс, в класс вводится информация о предмете, а в подкласс о том кто его преподаёт, хочу сделать перегрузку оператора ==, чтобы если пользователь вводил две одинаковые фамилии например выводилась некая ошибка, к сожалению пока не могу разобраться в синтаксисе, помогите если не трудно, сдавать уже завтра (
0
03.06.2012, 20:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2012, 20:37
Привет! Вот еще темы с ответами:

Перегрузка оператора ++ - C++
#include &quot;Operation.h&quot; using namespace std; const int COUNT = 10; int _tmain(int argc, _TCHAR* argv) { srand((unsigned...

Перегрузка оператора == и др - C++
C++ Builder ругаеться на перегрузку операторов. На mingw32-g++ все компилилось нормально. Пример пергрузки взял с хабра описание...

Перегрузка оператора + и = - C++
Здравствуйте! Возникла проблема при реализации кода перегрузки операторов. BigInt - это просто класс характеризующий огромные числа в...

Перегрузка оператора - C++
При вызове оператора, и если F1.x &lt;= 0, то пишет текст 'N' должно быть &gt; 0, после чего выводит расчеты по формуле. Но мне этого не...


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

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

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