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

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

Восстановить пароль Регистрация
 
SNZR
0 / 0 / 0
Регистрация: 11.10.2013
Сообщений: 5
19.12.2013, 22:57     КАК ОБОЙТИ VIRTUAL? #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
#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++
Как обойти пароль в RAR архиве C++
C++ Error C2106 как обойти?
C++ Как обойти массив без использования цикла
Как обойти рекурсию? C++
"Stack overflow" как обойти? C++
C++ Как обойти администратора ?
Protected abstract virtual base pure virtual private destructor C++

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

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

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