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

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

Войти
Регистрация
Восстановить пароль
 
xADMIRALx
67 / 61 / 1
Регистрация: 09.06.2012
Сообщений: 291
#1

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

19.07.2012, 19:04. Просмотров 491. Ответов 10
Метки нет (Все метки)

Помниться в с# есть такая штучка override,есть ли что-нибудь подобное в с++?

Столкнулся с проблемой :
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
class kub
{
   int a;
public:
  kub(int b)
{
 a = b;
}
   void info();
};
void kub::info()
{
    printf("\nа = %d\n",a);
}
 
class tre : public kub
{
int b;
tre(int q,int w) : kub(q)
{
b = w;
}
 void  info()
};
void tre::info()
{
 printf("\nа = %d\nb = %d\n",a,b);//мне нужно переопределить эту функцию
/* 
 info(); 
printf("\nb = %d\n",b);
*/ такой вариант не подойдет
}
то есть если
C++
1
2
3
4
5
6
7
8
9
10
int main()
{
  kub k(5);
tre t(15,15);
k.info();//выводил 1 вариант
t.info();// выводил 2 вариант
 
 
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2012, 19:04     Переопределение функции по наследовинии
Посмотрите здесь:

Переопределение функции в шаблоне - C++
Подскажите, в пустом проекте работает следующий код #include <utility> #include <type_traits> #include <cstdio> #include...

Переопределение виртуальной функции - C++
Всем доброй ночи :) Есть базовый абстрактный класс и два производных класса (А и В), в которых я пытяюсь переопределить виртуальную...

Наследник класса, переопределение функции - C++
Доброго времени суток! Есть не виртуальный класс, от него необходимо наследоваться и перегрузить одну из функций. Входные параметры будут...

Переопределение или перезагрузка функции - C++
у меня есть класс комплексных чисел. И как можно определить функцию sqrt() что бы она работала с моим классом тоже. Сразу говорю я не хочу...

Шаблоны и переопределение функции swap - C++
Есть у меня шаблонный класс, решил для него функцию swap написать: template <typename T> void swap (Stack<T>& s1, Stack<T>& s2) { ...

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

Ошибка. Переопределение параметров в функции - C++
Добрый вечер всем! Такая задача: Необходимо составить программу для систем счисления (от 2 до 36) пользователь вводит число в...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
canopen
412 / 411 / 12
Регистрация: 16.07.2012
Сообщений: 886
19.07.2012, 19:09     Переопределение функции по наследовинии #2
Так же как и в C# надо объявить метод info в классе kub виртуальным (virtual)
Только в отличие от C# добавлять override в описание метода info в классе tre не надо
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
19.07.2012, 19:13     Переопределение функции по наследовинии #3
По-моему виртуальные методы привязываются к типу. Попробуй заменить все "void info();" на "virtual void info();"
xADMIRALx
67 / 61 / 1
Регистрация: 09.06.2012
Сообщений: 291
19.07.2012, 19:13  [ТС]     Переопределение функции по наследовинии #4
точняк,спасибо

nexen
в классе kub,оказалось достаточным
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
19.07.2012, 21:07     Переопределение функции по наследовинии #5
Цитата Сообщение от xADMIRALx Посмотреть сообщение
то есть если
для этого вовсе не нужно делать функции виртуальными, виртуальные функции нужны лишь при работе с ссылками и указателями!
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.07.2012, 22:21     Переопределение функции по наследовинии #6
Цитата Сообщение от xADMIRALx Посмотреть сообщение
то есть если
nt main()
{
kub k(5);
tre t(15,15);
k.info();//выводил 1 вариант
t.info();// выводил 2 вариант
return 0;
}
И будет выводить. Объект k будет вызывать свой метод, а объект t - свой.

Добавлено через 14 минут
Цитата Сообщение от Jupiter Посмотреть сообщение
для этого вовсе не нужно делать функции виртуальными, виртуальные функции нужны лишь при работе с ссылками и указателями!
Дело в том, что ссыка или указатель, типа базового класса, может быть связан с объектом производного класса (но не наоборот), и в этом случае, чтобы вызывался метод не по типу ссылки или указателя, а по типу объекта, с которым эта ссылка или указатель связанны, метод должен быть объявлен в базовом классе как виртуальный.
Jupiter
19.07.2012, 23:14
  #7

Не по теме:

alsav22, вот спасибо, кэп

canopen
19.07.2012, 23:23
  #8

Не по теме:

Интереснее было бы обсудить почему в C# есть ключевое слово override, а в C++ - нет. И возникали ли из-за этого у кого-нибудь ошибки в C++ )))

alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
19.07.2012, 23:33     Переопределение функции по наследовинии #9
canopen, полагаю, что по аналогии с жабой в c# использование атрибутов необязательно
просто дополнительная проверка и документирование кода
Jupiter
19.07.2012, 23:35
  #10

Не по теме:

canopen, в С++11 ввели ключевое слово override

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2012, 03:14     Переопределение функции по наследовинии
Еще ссылки по теме:

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

Перегрузка\переопределение - C++
перегрузка и переопределение стандартных операторов в классе это одно и то же или нет?

Переопределение оператора - C++
У меня есть класс вектора. Надо переопределить оператор умножения числа на вектор. class myvector { private: int x,y,z; public:...

Переопределение массива - C++
Здравствуйте уважаемые участники!) Задался на С++ вопросом переопределение массива. В Visual Basic я делал так Dim a() as integer N...

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


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

Или воспользуйтесь поиском по форуму:
alsav22
20.07.2012, 03:14     Переопределение функции по наследовинии
  #11

Не по теме:

Цитата Сообщение от Jupiter Посмотреть сообщение

Не по теме:

alsav22, вот спасибо, кэп

Это я для nexen

Yandex
Объявления
20.07.2012, 03:14     Переопределение функции по наследовинии
Ответ Создать тему
Опции темы

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