Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Inconflict
0 / 0 / 0
Регистрация: 30.05.2012
Сообщений: 7
03.06.2012, 08:02     Виртуальный класс и перегрузка оператора #1
Собственно немного разобравшись в ооп написал небольшой код, по заданию нужно как-то прикрутить к нему виртуальный класс и сделать перегрузку оператора, хелпаните)
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 минут
все еще актуально
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2012, 08:02     Виртуальный класс и перегрузка оператора
Посмотрите здесь:

Перегрузка оператора + C++
перегрузка оператора C++
Класс Матрица, перегрузка оператора *= C++
C++ Перегрузка оператора
C++ Перегрузка оператора
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ilyawow
24 / 24 / 5
Регистрация: 18.11.2011
Сообщений: 266
03.06.2012, 09:02     Виртуальный класс и перегрузка оператора #2
Цитата Сообщение от Inconflict Посмотреть сообщение
Собственно немного разобравшись в ооп написал небольшой код, по заданию нужно как-то прикрутить к нему виртуальный класс и сделать перегрузку оператора, хелпаните)
Вы бы сказали ,что делает то, что вы уже написали . А то сиди разбирай что? где? и как ?
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;
}
Inconflict
0 / 0 / 0
Регистрация: 30.05.2012
Сообщений: 7
03.06.2012, 20:37  [ТС]     Виртуальный класс и перегрузка оператора #4
Цитата Сообщение от Ilyawow Посмотреть сообщение
Вы бы сказали ,что делает то, что вы уже написали . А то сиди разбирай что? где? и как ?
По факту ничего, программа для освоения ООП, имеется класс и подкласс, в класс вводится информация о предмете, а в подкласс о том кто его преподаёт, хочу сделать перегрузку оператора ==, чтобы если пользователь вводил две одинаковые фамилии например выводилась некая ошибка, к сожалению пока не могу разобраться в синтаксисе, помогите если не трудно, сдавать уже завтра (
Yandex
Объявления
03.06.2012, 20:37     Виртуальный класс и перегрузка оператора
Ответ Создать тему
Опции темы

Текущее время: 09:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru