С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

11.12.2013, 15:09. Просмотров 228. Ответов 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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
class Bass
{
    public:
        virtual int fun(int K)
        {
            x=1+K;
            return x;
        }
    private: int x;
};
 
class Bass2:public Bass
{
    public:
        virtual int fun(int K, int T)
        {
            x=1+K+T;
            return x;
        }
    private: int x;
};
 
 
    int main()
 
    {
                
        Bass *p;
        Bass obj;
        Bass2 obj2;
        cout<<p->fun(1);
        p=&obj2;
        cout<<p->fun(1,1);
        return 0;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2013, 15:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос виртуальные функции (C++):

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

виртуальные функции - C++
C++ подскажите пожалуста на словах код писать ненадо. как преопределить функцию virtual Print(). Создать абстрактный базовый класс...

Виртуальные функции - C++
Создайте класс Word, определите в нем виртуальную функцию-член word_main(*char x), которая выводит на экран фразу: “Я знаю слово x”....

Виртуальные функции - C++
Доброго времени суток. Есть задание. Создать абстрактный класс Function (функция) с виртуальными методами вычисления значения функции...

виртуальные функции - C++
сделать какой либо из методов класса виртуальным #include&lt;iostream.h&gt; #include&lt;stdio.h&gt; class chislo { int a; public: ...

виртуальные функции - C++
интересует 2 вопроса:1)Какими элементами могут отличаться экземпляры одной виртуальной функции, находящиеся в разных производных...

1
egor2116
342 / 373 / 42
Регистрация: 20.01.2013
Сообщений: 1,132
11.12.2013, 16:30 #2
Не могу перегрузить функцию
Есть понятие перегрузка и переопределение.
Вы переопределяете(затеняете) функцию базового класса новой функцией.
Пример
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
#include <iostream>
 
class Bass
{
    public:
        virtual int fun(int K)
        {
            x=1+K;
            return x;
        }
    private: int x;
};
 
class Bass2:public Bass
{
    public:
        int fun(int K)//перегруженная базового класса
        {
            x=1+K+100;
            return x;
        }
        
         int fun(int K, int T)//обьявленная новая с таким же именем но другими параметрами
        {
            x=1+K+T;
            return x;
        }
    private: int x;
};
 
 int main()
 {
    Bass b1;
    Bass2 b2;
    
    std::cout << b1.fun(5) << std::endl;//виртуальная ф-я базовый класс
    std::cout << b2.fun(10) << std::endl;//перегруженная функция базового класса 
    std::cout << b2.fun(10,5) << std::endl;//тоже имя ф-ии но другой набор параметров
    
     system("PAUSE");
     return 0;
 }
Добавлено через 2 минуты
Точнее я неправильно сказал вы не затеняеете а просто не реализуете

Добавлено через 54 секунды
Слово virtual не гарантирует того что обязательно нужно перегрузить функцию в классе наследнике.

Добавлено через 1 минуту
Если вы этого не сделаете будет использоваться функция базового класса.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2013, 16:30
Привет! Вот еще темы с ответами:

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

Виртуальные функции - C++
Объясните пожалуйста зачем нужны чисто виртуальные функции?

Виртуальные функции - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; using namespace std; class Array { ...

виртуальные функции - C++
Помогите пожалуйста, создать абстрактный класс Shape с двумя чисто виртуальными методами Area() и Print(). Определить производные классы ...


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

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

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