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

наследование классов - C++

Восстановить пароль Регистрация
 
Novicheki
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 22
24.11.2012, 23:20     наследование классов #1
Помогите пожалуйста разобраться с задачей
Создайте базу данных деканата. В ней фиксируются данные о 2 категориях студентах: студенты получающие академическую стипендию, студенты получающие социальную стипендию. Базовый класс содержит имя и номер зачетной книжки. В информации о студентах получающих академическую стипендию содержится информация о среднем балле на который студент сдал сессию. В информации о студентах получающих социальную стипендию содержится информация о социальной категории студента. Программа должна вводить данные и выводить их на экран.
Здесь соответственно 3 класса, базовый и 2 наследуемых, но я не понимаю каким образом организовать вывод данных с разных классов
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2012, 23:20     наследование классов
Посмотрите здесь:

C++ Наследование классов
C++ наследование классов
наследование классов C++
наследование классов C++
C++ Наследование классов.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
24.11.2012, 23:47     наследование классов #2
Цитата Сообщение от Novicheki Посмотреть сообщение
каким образом организовать вывод данных с разных классов
сделать ф-цию virtual std::ostream& Print(std::ostream&), переопределить её в производных классах, ну и перегрузить friend operator<< который будет вызывать эту ф-цию
Novicheki
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 22
24.11.2012, 23:54  [ТС]     наследование классов #3
вообщем, создать виртуальную функцию и переопределить в каждом классе..
однако, все же не до конца понимаю сути. в пример ничего не можете привести?
спасибо!
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
25.11.2012, 00:00     наследование классов #4
http://ru.wikipedia.org/wiki/Виртуальный_метод
Novicheki
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 22
25.11.2012, 11:14  [ТС]     наследование классов #5
Кликните здесь для просмотра всего текста
#include "stdafx.h"
#include "iostream"
using namespace std;
class student
{public:
char imya[10]; char nomer_zachetki[8];
virtual void fun() { cout << "Имя" <<imya<<"Номер зачетки"<<nomer_zachetki<< endl; }
};
class sochialublic student
{public:
char sochial_kategoria[20];
virtual void fun() { cout << "Социальная категория" <<sochial_kategoria<< endl; }
};
class akademublic student
{public:
double sred_ball;
virtual void fun() { cout << "Средний балл" <<sred_ball<< endl; }

};
void main()
{
cout<<"Введите Имя"<<endl;
cin>>imya;
cout<<"Введите Номер зачетки"<<endl;
cin>>nomer_zachetki;

}

набросал вот, только c friend функциями проблема, помогите плиз
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
25.11.2012, 12:21     наследование классов #6
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
#include <iostream>
#include <cstring>
#include <windows.h>
using namespace std;
 
class Student
{
public:
    Student(char const* const name, size_t const number)
    {
        strcpy(name_, name);
        number_ = number;
    }
    friend std::ostream& operator<<(std::ostream& ost, Student const& student)
    {
        return student.fun(ost);
    }
protected:
    virtual std::ostream& fun(std::ostream& ost) const
    {
        return ost << "Имя: " << name_ <<"\nНомер зачетки: "<< number_;
    }
    char name_[10];
    size_t number_;
};
 
class Social : public Student
{
public:
    Social(char const* const name, size_t const number, char const* const category)
        : Student(name, number)
    {
        strcpy(category_, category);
    }
private:
    virtual std::ostream& fun(std::ostream& ost) const
    {
        return Student::fun(ost) << "\nСоциальная категория: " << category_;
    }
    char category_[20];
};
 
class Academ : public Student
{
public:
    Academ(char const*const name, size_t const number, double const average_mark)
        : Student(name, number)
    {
        average_mark_ = average_mark;
    }
private:
    virtual std::ostream& fun(std::ostream& ost) const
    {
        return Student::fun(ost) << "\nСредний балл: " << average_mark_;
    }
    double average_mark_;
};
 
int main()
{
    SetConsoleOutputCP(1251);
    Social socStud("name5", 112897456, "category12");
    std::cout << socStud << std::endl;
}
Yandex
Объявления
25.11.2012, 12:21     наследование классов
Ответ Создать тему
Опции темы

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