Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2009, 05:09   #1
Lunex.08
Форумчанин
 
Аватар для Lunex.08
 
Регистрация: 25.02.2009
Сообщений: 145
По умолчанию Наследование и переопределение.

Здравствуйте,уважаемые программисты!
У меня вот такого рода вопрос:
В строке 13 метод move () класса helicopter заменяет функцию move () класса vehicle?
Вот код:

Код:
1. #include <iostream.h>
2. 
3. class vehicle 
4. {
5.    public:
6.    void start ();
7.    void move ();
8. };
9.
10. class helicopter : public vehicle
11. {
12.    public:
13.    void move ();
14. };
15. 
16. void vehicle::start () {cout << "Starting...\n"}
17. void vehicle::move () {cout << "Driving...\n"}
18. 
19. void helicopter::move () {cout << "Flying...\n"}
20. 
21. void main ()
22. {
23.    helicopter whirly;
24.    whirly.start ();
25.    whirly.move ();
26. }
(пишу на MVC++)
Компьютеры бесподобны: за несколько минут они могут совершить такую грандиозную ошибку, какую не в состоянии сделать множество людей за многие месяцы.

Последний раз редактировалось Sazary; 28.09.2009 в 16:13.
Lunex.08 вне форума Ответить с цитированием
Старый 28.09.2009, 06:25   #2
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

c++ / компилятор g++
Код:
#include <stdio.h>
class A
{
public: int a;
int fun1(){return 1;}
};
class B : public A
{
public:
int fun1(){return 2;}
int fun2(){return 3;}
};
int main()
{
A obj1;
B obj2;
printf("obj1.fun1()=%d   obj2.fun1()=%d   obj2.fun2()=%d   ((A)obj2).fun1()=%d\n",obj1.fun1(),obj2.fun1(),obj2.fun2(), ((A)obj2).fun1());
return 0;
}
отработка:
Цитата:
[ ~/1234]$ ./a.out
obj1.fun1()=1 obj2.fun1()=2 obj2.fun2()=3 ((A)obj2).fun1()=1
Я правильно понял Вас.. вы это спрашивали??
dampirik вне форума Ответить с цитированием
Старый 28.09.2009, 11:15   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Ну как сказать переопределяет... У каждого класса будет свой метод с одним и тем же именем. Причём, если написать так:
Код:
helicopter whirly;
vehicle *pWhirly = &whirly;
pWhirly->move (); // Тут вызовется метод класса vehicle, хотя указатель на объект класса helicopter
pu4koff вне форума Ответить с цитированием
Старый 29.09.2009, 09:23   #4
Lunex.08
Форумчанин
 
Аватар для Lunex.08
 
Регистрация: 25.02.2009
Сообщений: 145
По умолчанию

Спасибо,разобрался.
dampirik,вы меня чenm на так поняли но за попытку спасибо+репутация)
как и вам,pu4koff)
Компьютеры бесподобны: за несколько минут они могут совершить такую грандиозную ошибку, какую не в состоянии сделать множество людей за многие месяцы.
Lunex.08 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переопределение Update в DBGrid Minotavr_x86 БД в Delphi 6 18.04.2009 13:10
Переопределение конструктора формы daunito Общие вопросы Delphi 5 23.11.2008 01:58
Переопределение операций(сложение,вычитание...) master_root Общие вопросы Delphi 3 18.06.2008 20:20
Переопределение реакции на события ByWatt Общие вопросы Delphi 1 20.12.2007 17:22
Переопределение операций toeman Общие вопросы C/C++ 2 20.11.2007 11:21