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

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

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

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

29.12.2011, 15:49. Просмотров 710. Ответов 7
Метки нет (Все метки)

Задача:
В классе хранится целое, и определяется виртуальная функция shownum(). Создать 2 производных класса, наследующие класс num. В производных классах переопределить shownum(), так чтобы выводить число в шестнадцатеричной и восьмеричной системах исчисления.
Вот сама программа.
Объясните пожалуйста как эта программа работает и почему выводит число 24??(можно с коментариями)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
class num{
public:
    int i;
    num(int x){i=x;}
    virtual void shownum() {cout<<i<<"\n";}};
    class outhex:public num{
    public:
        outhex(int n):num(n){}
        void shownum(){cout<<hex<<i<<"\n";}};
        class outoct:public num{
        public:
            outoct(int n):num(n){}
            void shownum(){cout<<oct<<i<<"\n";}};
            int main()
            {outhex h(10);
            outoct o(20);
            o.shownum();
            return 0;}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2011, 15:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Виртуальные функции С++ (C++):

виртуальные и чисто виртуальные функции - C++
Чем они отличаются?? если можно, с примерами. И как из виртуальной функции сделать чисто виртуальную? #include &lt;iostream&gt; using...

Виртуальные функции - C++
Здравствуйте,уважаемые посетители форума.Пишу программу созданию фигур и их перемещению на экране использую виртуальные функции.И...

Виртуальные функции - C++
Пожалуйста, подскажите как быть: class Circles; class Rectangs; class Snake { public: Circles *drr; void start1(); ...

виртуальные функции - C++
Здравствуйте.Перечитал различные статьи,но не могу до конца вникнуть в смысл использования виртуальных функций.Для взаимного понимания...

Виртуальные функции - C++
Здрасте! вот задачка, какбэ сделал, но нужны виртуальные функции. даже не знаю как их сделать. #include &lt;iostream.h&gt; #include...

Виртуальные функции - C++
Объясните, для чего необходимы виртуальные функции. Где их рационально использовать. P.S. Если есть ссылки на толковые материалы - не...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
dimcoder
Полярный
462 / 434 / 68
Регистрация: 11.09.2011
Сообщений: 1,133
29.12.2011, 15:56 #2
Цитата Сообщение от 1ive Посмотреть сообщение
Объясните пожалуйста как эта программа работает и почему выводит число 24??
Объяснить конкретно что?
Форматируйте пожалуйста код, читать невозможно, ну хотя бы так:
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
#include <iostream>
 
class num
{
public:
   int i;
   num(int x){i=x;}
   virtual void shownum() {cout<<i<<"\n";}
};
 
class outhex:public num
{
   public:
   outhex(int n):num(n){}
   void shownum(){cout<<hex<<i<<"\n";}
};
 
class outoct:public num
{
   public:
   outoct(int n):num(n){}
   void shownum(){cout<<oct<<i<<"\n";}
};
 
int main()
{
   outhex h(10);
   outoct o(20);
   o.shownum();
   return 0;
}
0
1ive
0 / 0 / 0
Регистрация: 29.12.2011
Сообщений: 10
29.12.2011, 16:00  [ТС] #3
прошу прощения за некорректные вопросы!...
объяснения начать можно вот с этого:
C++
1
outhex(int n):num(n){}
( что это такое и для чего используется)
0
cyberobot
15 / 15 / 1
Регистрация: 01.09.2011
Сообщений: 66
29.12.2011, 16:03 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
class num{
public:
        int i;
        num(int x){i=x;}
        virtual void shownum() {cout<<i<<"\n";}};
        class outhex:public num{
        public:
                outhex(int n):num(n){}
                void shownum(){cout<<hex<<i<<"\n";}};
                class outoct:public num{
                public:
                        outoct(int n):num(n){}
                        void shownum(){cout<<oct<<i<<"\n";}};
                        int main()
                        {outhex h(10); //10-в десятичной системе
                        outoct o(20); //20 в десятичной системе
                        o.shownum(); //перевод 20 в десятичной системе в восьмеричную систему. 20 в десятичной системе - 24 в восьмеричной системе
                        return 0;}
0
dimcoder
Полярный
462 / 434 / 68
Регистрация: 11.09.2011
Сообщений: 1,133
29.12.2011, 16:06 #5
C++
1
outhex(int n):num(n){}
outhex(int n) - конструктор.
num(n) - это значит, что вызывается конструктор базового класса num.

PS Следовало бы вам засунуть int i; базового класса в private, а то как-то не по человечески получается, но к этому думаю потом вернемся.
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
29.12.2011, 16:18 #6
dimcoder, В protected тогда уж, если такой интерфейс как ТС сделал поддерживать.
0
dimcoder
Полярный
462 / 434 / 68
Регистрация: 11.09.2011
Сообщений: 1,133
29.12.2011, 16:27 #7
Нда, интерфейсу не позавидуешь. А вообще я бы базовый класс так написал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream.h>
#include <conio.h>
 
class num
{
public:
 
   num(int x){setNum(x);}
 
   virtual void setNum(int x) {i = x;}
 
   virtual int getNum() {return i;}
 
   virtual void showNum {cout<<i<<"\n";}
 
private:
 
   int i;
};
Теперь осталось переопределять функцию setNum в остальных классах под себя.
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
29.12.2011, 16:29 #8
dimcoder, Ну может хоть virtual тогда?
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2011, 16:29
Привет! Вот еще темы с ответами:

виртуальные функции - C++
Добрый день. Начал изучать виртуальные функции и столкнулся с проблемой. Не могу перегрузить функцию. Объясните что не так и как нужно: ...

Виртуальные функции - C++
Какие происходят изменения, когда в классе объявляем одну или несколько функций виртуальными? Вот, например, если в SuperClass перед...

Виртуальные функции - C++
Разработать программу с использованием наследования классов, реализующую классы: Земноводное(ареал обитания)-&gt;Крокодил(род, длина, вес) ...

Виртуальные функции в С++ - C++
Здравствуйт. Помогите осмыслить доконца вирт. ф-ции. После прочтения источников я собрал определенную картину: Вирт функции...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.12.2011, 16:29
Ответ Создать тему
Опции темы

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