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

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

Войти
Регистрация
Восстановить пароль
 
necheyhin_a_v
3 / 3 / 1
Регистрация: 18.12.2012
Сообщений: 60
#1

Наследник класса, переопределение функции - C++

21.06.2013, 14:16. Просмотров 1414. Ответов 13
Метки нет (Все метки)

Доброго времени суток! Есть не виртуальный класс, от него необходимо наследоваться и перегрузить одну из функций. Входные параметры будут такие же, как и у существующей, имя функции необходимо оставить тоже! Можно ли это вообще сделать, или придется какой-либо фиктивный входной параметр добавлять, либо вообще в корне менять имя функции?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2013, 14:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Наследник класса, переопределение функции (C++):

класс наследник на основе базового класса - C++
-----

Написать класс «множество» – наследник класса «массив» - C++
Ребята может есть что-то прошу помощи. Написать класс «множество» – наследник класса «массив» (множество понимается в привычном...

Создать новый объект-наследник абстрактного класса - C++
Приветствую, друзья! У нас есть абстрактный класс AbstractClass и его наследники child1 и child2. В массиве у нас есть несколько...

Переопределение класса - C++
Пытаюсь создать приоритетную очередь на основе кучи, но не выходит. Не понимаю почему, выскакивает куча ошибок, в том числе эти: ...

Переопределение класса вектор - C++
Переопределите класс Vector, описывающий вектор в пространстве: а) двухместную операцию сложения векторов (+), возвращающую свой...

Переопределение метода класса-шаблона - C++
Привет народ. Есть такой код: typedef OS::process<OS::pr0, 90> TProc1; TProc1 Proc1; template<> void Proc1::exec() { //тут...

13
kvadro
11 / 9 / 1
Регистрация: 12.03.2012
Сообщений: 127
21.06.2013, 14:34 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class A
{
  public:
    virtual void myMethod()
    {
        // ...
    }
}
 
class B : public A
{
  public:
    void myMethod()
    {
        // ...
    }
}
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
21.06.2013, 14:47 #3
а чего не то
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
class A
{
public:
    void f(int a)
    {
        printf("ClassA %i\n", a);
    }
};
class B:public A
{
    public:
    void f(int a)
    {
        printf("ClassB %i\n", a);
    }
};
 
int main()
{
    A a;
    a.f(6);
    B b;
    b.f(5);
    getchar();
    return 0;
}
Вывод:
ClassA 6
ClassB 5;
0
kvadro
11 / 9 / 1
Регистрация: 12.03.2012
Сообщений: 127
21.06.2013, 14:51 #4
aLarman
C++
1
2
A *b = new B();
b->f(5);
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
21.06.2013, 14:55 #5
Цитата Сообщение от necheyhin_a_v Посмотреть сообщение
Есть не виртуальный класс, от него необходимо наследоваться и перегрузить одну из функций
@kvadro, ну и что вызовется функция класса А, а что ты хотел сказать?)
0
kvadro
11 / 9 / 1
Регистрация: 12.03.2012
Сообщений: 127
21.06.2013, 15:01 #6
Человеку нужно перезагрузить метод, а не вызвать метод его родителя.
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
21.06.2013, 15:03 #7
Цитата Сообщение от kvadro Посмотреть сообщение
перезагрузить
наверное все таки перегрузить
Цитата Сообщение от aLarman Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
class B:public A 
{ 
public: 
void f(int a)
{ 
printf("ClassB %i\n", a); 
}
 };
это разве не перегрузка :?
0
kvadro
11 / 9 / 1
Регистрация: 12.03.2012
Сообщений: 127
21.06.2013, 15:13 #8
Начнём с того что:
Входные параметры будут такие же
имя функции необходимо оставить тоже
Уже скорей он не про перегрузку говорит.

Добавлено через 3 минуты
это разве не перегрузка
Нет

Добавлено через 44 секунды
Вот это перегрузка:
C++
1
2
void f(int a);
void f(int a, int b);
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.06.2013, 15:14 #9
Цитата Сообщение от kvadro Посмотреть сообщение
Уже скорей он не про перегрузку говорит.
Обычно говорят переопределение унаследованных методов. Это не разновидность перегрузки.
Цитата Сообщение от necheyhin_a_v Посмотреть сообщение
Входные параметры будут такие же, как и у существующей, имя функции необходимо оставить тоже
Переопределение так и делается, по другому не получится.
Можно делать методы виртуальными, можно нет. На решение данной задачи это не влияет.
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
21.06.2013, 15:17 #10
ок, туплю а что значит
Цитата Сообщение от kvadro Посмотреть сообщение
перезагрузить метод
?
0
kvadro
11 / 9 / 1
Регистрация: 12.03.2012
Сообщений: 127
21.06.2013, 15:18 #11
alsav22
Ну я и имел ввиду что скорей всего он не правильно выразился, и говорил про переопределение метода.

Добавлено через 59 секунд
а что значит
Значит опечатка.
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.06.2013, 15:25 #12
Цитата Сообщение от kvadro Посмотреть сообщение
Ну я и имел ввиду что скорей всего он не правильно выразился, и говорил про переопределение метода.
Наверное. В заголовке темы: переопределение функции.
0
necheyhin_a_v
3 / 3 / 1
Регистрация: 18.12.2012
Сообщений: 60
22.06.2013, 08:34  [ТС] #13
В пояснении опечатка, необходимо переопределить функцию! На сколько я понял вызываться будет все корректно? Функция базового класса не виртуальная!!! Базовый класс править нельзя!
0
kvadro
11 / 9 / 1
Регистрация: 12.03.2012
Сообщений: 127
23.06.2013, 01:26 #14
necheyhin_a_v
Если тип переменной явно прописан как тип наследника - будет работать всё нормально.
Иначе юзай делегаты.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2013, 01:26
Привет! Вот еще темы с ответами:

Переопределение оператора <<, класса ofstream - C++
#ifndef COUT_RUS_H #define COUT_RUS_H #include &lt;iostream&gt; #include &lt;windows.h&gt; namespace rus { class Ccout { ...

Переопределение [][] или ()() для класса - C++
Есть класс Array, в котором переопределены операторы (+, -, ==, != и т.д) для работы с матрицами. Нужно так же переопределить оператор ...

Переопределение переменной класса-родителя - C++
Есть базовый класс button_c и производный от него about_c. В about_c я попытался переопределить значения переменных w, h, dir, dir_h, но...

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


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

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

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