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

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

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

Виртуальные функции и указатели на классы - C++

24.05.2014, 19:22. Просмотров 149. Ответов 0
Метки нет (Все метки)

В прошлой лабораторной было задание по поводу наследования классов. В следующем задании нужно этот код преобразовать с использованием виртуальных указателей на классы. Я в непонятках как быть дальше(

Вот код прошлой лабы:
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
#include <iostream>
#include <vector>
#include <sstream>
#include <string>
 
class planet
{
    public:
        planet(std::string name, std::string aof, std::string population)
        {
            this->name = name;
            this->aof = aof;
            this->population = population;
        }
 
        std::string get_full_information()
        {
            std::ostringstream full_information;
            full_information << this->name << " "
                << this->aof << " "
                << this->population;
            return full_information.str();
        }
 
    private:
        std::string name;
        std::string aof; // availability of life
        std::string population;
};
 
class moon : public planet
{
    public:
        moon(std::string name, std::string aof, std::string population, std::vector<int>kilometers) : planet(name, aof, population)
        {
            this->kilometers = kilometers;
        }
 
        float get_average_kilometers()
        {
            unsigned int count_kilometers = this->kilometers.size();
            unsigned int sum_kilometers = 0;
            float average_kilometers;
            for(unsigned int i = 0; i < count_kilometers; ++i)
            {
                sum_kilometers += this->kilometers[i];
            }
 
            average_kilometers = (float) sum_kilometers / (float) count_kilometers;
            return average_kilometers;
        }
 
    private:
        std::vector<int> kilometers;
 
};
 
class earth : public planet
{
    public:
        earth(std::string name, std::string aof, std::string population, unsigned int years) : planet(name, aof, population)
        {
            this->years = years;
        }
 
        unsigned int get_years()
        {
            return this->years;
        }
 
    private:
            unsigned int years;
};
 
int main()
{
 
    std::vector<int> kilometers;
 
    kilometers.push_back(126389);
    kilometers.push_back(159124);
    kilometers.push_back(7549);
    kilometers.push_back(187946);
    kilometers.push_back(9456984);
    kilometers.push_back(1587479);
 
    unsigned int earth_years = 134987964897;
 
 
    moon *mo = new moon("Moon", "Unknown", "Unknown", kilometers);
    std::cout << mo->get_full_information() << std::endl;
    std::cout << "Average is: " << mo->get_average_kilometers() << std::endl;
 
    earth *ea = new earth("Earth", "There is", "Approximately 6 billion", earth_years); // приблизительно
    std::cout << ea->get_full_information() << std::endl;
    std::cout << "Number of Years: " << ea->get_years() << std::endl;
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2014, 19:22     Виртуальные функции и указатели на классы
Посмотрите здесь:

C++ Виртуальные функции. Абстрактные классы.
Указатели на виртуальные функции-члены C++
виртуальные классы C++
C++ Чисто виртуальные классы. Модификатор const
C++ Абстрактные классы, виртуальные функции
C++ Виртуальные абстрактные базовые классы
Классы, указатели и функции? C++
C++ виртуальные базовые классы
Виртуальные функции и классы C++
C++ Абстрактные классы и чистые виртуальные функции
C++ Абстрактные классы. Виртуальные функции
C++ Абстрактные классы. Виртуальные функции. Задача

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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