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

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

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

КАК ОБОЙТИ VIRTUAL? - C++

19.12.2013, 22:57. Просмотров 166. Ответов 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
#include "stdafx.h"
#include "CMeter1.h"
#include "CMeter2.h"
#include "CMeter3.h"
#include "iostream"
using namespace std;
 
const int n=3;
 
int _tmain(int argc, _TCHAR* argv[])
{
    bool e;
    char c;
    CBase* Meter[n];
 
    e=0;
    Meter[0] = new CMeter1();
    Meter[1] = new CMeter2();
    Meter[2] = new CMeter3();
 
    printf("Menu:\n1.Test Meter #1\n2.Test Meter #2\n3.Test Meter #3\nX. Exit\n");
    while(!e)
    {
        printf("Choice:");
        cin>>c;
        switch (c)
        {
        case '1':
            {
                Meter[0]->dimension();
            }
            break;
        
        case '2':
            {
                Meter[1]->dimension();
            }
            break;
 
        case '3':
            {
                Meter[2]->dimension();
            }
            break;
 
        case 'x': case 'X':
            {
                printf("Exiting...\n");
                e=1;
            }
            break;
 
        default:
            {
                printf("Incorrect choice! Retrty!\n");
            }
        }
    }
    
 
 
    return 0;
}
CBase.h:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#pragma once
#include "stdafx.h"
 
class CBase
{
public:
    CBase();
    ~CBase();
    virtual void dimension();
 
protected:
    int m_value;
};

CBase.cpp:

C++
1
2
3
4
5
6
#include "stdafx.h"
#include "CBase.h"
 
CBase::CBase(){}
CBase::~CBase(){}
void CBase::dimension(){}
CMeter1.h:

C++
1
2
3
4
5
6
7
8
9
10
#include "stdafx.h"
#include "CBase.h"
 
class CMeter1:public CBase
{
public:
    CMeter1();
    ~CMeter1();
    virtual void dimension();
};
CMeter1.cpp:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h"
#include "CMeter1.h"
 
CMeter1::CMeter1():CBase()
{
}
 
CMeter1::~CMeter1()
{
}
 
void CMeter1::dimension()
{
    srand(time(NULL));
    m_value=rand()%1001;
    m_value=~m_value;
    printf("Meter 1: %d %X\n",m_value,m_value);
}
CMeter2.h:

C++
1
2
3
4
5
6
7
8
9
10
#include "stdafx.h"
#include "CBase.h"
 
class CMeter2: public CBase
{
public:
    CMeter2();
    ~CMeter2();
    virtual void dimension();
};
CMeter2.cpp:

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
#include "stdafx.h"
#include "CMeter2.h"
 
CMeter2::CMeter2():CBase()
{
}
 
CMeter2::~CMeter2()
{
}
 
void CMeter2::dimension()
{
    int s1,s2;
    s1=s2=0;
    srand(time(NULL));
    m_value=rand()%1001;
    s1=m_value;
    while (m_value!=0)
    {
        s2=s2+m_value%10;
        m_value=m_value/10;
    }
    printf("Meter 2: %d %d\n",s1,s2);
}
CMeter3.h:

C++
1
2
3
4
5
6
7
8
9
10
#include "stdafx.h"
#include "CBase.h"
 
class CMeter3: public CBase
{
public:
    CMeter3();
    ~CMeter3();
    virtual void dimension();
};






CMeter3.cpp:

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
#include "stdafx.h"
#include "CMeter3.h"
 
CMeter3::CMeter3():CBase()
{
}
 
CMeter3::~CMeter3()
{
}
 
void CMeter3::dimension()
{
    srand(time(NULL));
    m_value=rand()%1001;
    int val=m_value;
    if (m_value%2==0)
    {
        m_value=m_value>>1;
        printf("Inital value %i is even. Right shift: %i\n", val, m_value);
    }
    else
    {
        m_value=m_value<<1;
        printf("Inital value %i is odd. Left shift: %i\n", val, m_value);
    }
}
stdafx.h

C++
1
2
3
4
5
6
7
8
9
#pragma once
#pragma warning(disable: 4244)
 
#include "targetver.h"
 
#include <stdio.h>
#include <tchar.h>
#include <time.h>
#include <stdlib.h>
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2013, 22:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос КАК ОБОЙТИ VIRTUAL? (C++):

Protected abstract virtual base pure virtual private destructor - C++
Хай, all) Вопрос не для начинающих и дурацкий) В разделе для экспертов публиковать не стал, чтобы не засорять его) Наткнулся тут на...

Как обойти администратора ? - C++
Добрый день. Сделал не большую программу ,но использовать по назначению не особо получается т.к. мешает запрос прав администратора... Как...

Как обойти рекурсию? - C++
double f(x) { return sin(x) + f(sin(x)); } можно ли сделать без этого как-нибудь?

Error C2106 как обойти? - C++
Вот фрагмент кода на Delphi Type matr=array of real; vect=array of real; ... X1:matr; Y1,Z1:vect; ... X1:=alpha;...

Как обойти пароль в RAR архиве - C++
Уважаемые специалисты! Кто из Вас знает, где хранятся пароли к RAR (SFX) архивам, и как они зашифрованы… Может кто то подскажет...

Как обойти массив без использования цикла - C++
С помощью рекурсии

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2013, 22:57
Привет! Вот еще темы с ответами:

как мне обойти все подкаталоги данного каталога.? - C++
помогите плз разобраться с директориями. вот как мне обойти все подкаталоги данного каталога.?

Как удобнее обойти инкапсуляцию в программе из нескольких файлов на С/С++? - C++
Ситуация такая: в программах на Бейсике, например, существуют единые для всего кода переменные, с которыми можно полноценно работать в...

Как избежать дублирования кода при использовании virtual функций? - C++
Здравствуйте. Есть Класс Студент_А и Студент_Б. В каждом есть поле private содержащее string name. В классе Студент_А есть virtual метод,...

Необходимо обойти ошибку в if на проверку месяцев. Не понимаю совершенно как это сделать - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;clocale&gt; #include &lt;Windows.h&gt; #include &lt;locale&gt; using...


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

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

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