Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
6 / 6 / 1
Регистрация: 22.12.2011
Сообщений: 134

Вызов наследуемых методов из базового класса

08.03.2014, 15:08. Показов 3072. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток, перейду сразу к сути.
Код:
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
class Base
{
    protected:
 
    public:
        virtual void Message()
        {
            cout << "Base class" << endl;
        }
 
        Base()
        {
 
        }
};
 
class Some : public Base
{
    protected:
 
    public:
        void Message()
        {
            cout << "Some class" << endl;
        }
 
        Some()
        {
 
        }
};
 
int main()
{
    Base arr;
    arr = Some();
 
    arr.Message();
 
    return 0;
}
Результат выполнения напишет в консоль "Base class", вопрос почему так происходит?
Как повернуть ситуацию, то есть что бы при вызове Message(); вызывался метод соответствующий экземпляру. (В данном случае Some.Message(); )
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.03.2014, 15:08
Ответы с готовыми решениями:

Вызов методов производного класса из базового
Возможно ли, чтобы class A { void f1() { f2();//если вызвано из B, то вызывается B::f2(), а не A::f2() } void f2(){} }

Вызов переопределенного метода из методов базового класса
Здравствуйте, у меня есть два класса, базовый и производный. В производном классе я переопределяю два метода method1 и method2. В базовом...

Вызов методов базового и производного классов
Народ, объясните тупому механику раннего связывания. Вывод программы, что ниже, 22. Хотя если вызывать непосредственно функцию f, будет...

5
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
08.03.2014, 15:19
Цитата Сообщение от Shaman163 Посмотреть сообщение
Результат выполнения напишет в консоль "Base class", вопрос почему так происходит?
не должон
покажи как вызываешь?
0
6 / 6 / 1
Регистрация: 22.12.2011
Сообщений: 134
08.03.2014, 15:23  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
не должон
покажи как вызываешь?
Ниже пролистайте, я весь листинг выложил.
0
19495 / 10100 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
08.03.2014, 15:27
Цитата Сообщение от Shaman163 Посмотреть сообщение
Как повернуть ситуацию, то есть что бы при вызове Message(); вызывался метод соответствующий экземпляру.
C++
1
2
3
4
5
6
7
8
9
int main()
{
    Some some;
 
    Base & base = some;
    base.Message();
 
    return 0;
}
Полиморфный вызов доступен через ссылки, или указатели.

А в твоем примере вообще произошло страшное:
C++
1
2
3
4
5
6
7
8
9
10
int main()
{
    Base arr;
    arr = Some(); // временный объект типа Some был усечен до Base, 
                  // в реальной ситуации это может привести к утечкам ресурсов
 
    arr.Message();
 
    return 0;
}
1
6 / 6 / 1
Регистрация: 22.12.2011
Сообщений: 134
08.03.2014, 15:30  [ТС]
Большое спасибо то что нужно.
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
08.03.2014, 16:06
C++
1
2
3
4
5
6
7
8
9
int main()
{
    Base* arr; // указатель на базовый класс
    arr = new Some; // инициализируем адресом производного класса
    arr->Message();// вызов виртуальной функции производного класса
    arr->Base::Message(); // если приспичило вызвать метод из базового класса
 
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.03.2014, 16:06
Помогаю со студенческими работами здесь

Вызов метода производного класса через обращение к методу базового класса
Добрый день. Изучаю основы ООП, наткнулся на проблему. Если создавать классы внутри main.cpp, то всё нормально. Если же создавать в...

Вызов объектом базового класса функцию из производного класса!
Как можно осуществить вызов или передачу значения в базовый класс для дальнейшего вычисления этого значения в производном классе. Вот...

Вызов метода базового класса из класса-потомка
Нужно вызывать из метода, переопределенного в потомке, соответствующий метод базового класса. При этом они являются виртуальными. Вот...

Вызов конструктора базового класса из класса-наследника
Можно ли вне списка инициализации вызвать конструктор базового класса ? class A { int a; public: A(int c):a(c){} ...

Запрещение перегрузки public методов базового класса
Можно ли запретить наследникам перегружать public методы базового класса? Если да то как? class base { public: void...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru