Как вызвать виртуальный метод базового класса
От: tripol  
Дата: 29.04.10 09:59
Оценка:
Имеется следующий код. Как вызвать виртуальный метод базового класса (A::Destroy) для объекта класса B?

#include "stdafx.h"
#include <iostream>

using namespace std;

class A
{
public:
    virtual void Destroy()
    {
        cout << "A::Destroy()" << endl;
    }
};

class B: public A
{
public:
    virtual void Destroy()
    {
        cout << "B::Destroy()" << endl;
    }
};

int _tmain(int argc, _TCHAR* argv[])
{
    B b;
    b.Destroy(); // как здесь вызвать только A::Destroy() ?
    return 0;
}
Re: Как вызвать виртуальный метод базового класса
От: Caracrist https://1pwd.org/
Дата: 29.04.10 10:02
Оценка: 4 (3)
Здравствуйте, tripol, Вы писали:

T>Имеется следующий код. Как вызвать виртуальный метод базового класса (A::Destroy) для объекта класса B?



 b.A::Destroy();
~~~~~
~lol~~
~~~ Single Password Solution
Re[2]: Как вызвать виртуальный метод базового класса
От: slava_phirsov Россия  
Дата: 29.04.10 10:03
Оценка:
Здравствуйте, Caracrist, Вы писали:

C>Здравствуйте, tripol, Вы писали:


T>>Имеется следующий код. Как вызвать виртуальный метод базового класса (A::Destroy) для объекта класса B?



C>
C> b.A::Destroy(); 
C>


Опередил, шайтан!
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Re: Как вызвать виртуальный метод базового класса
От: Bell Россия  
Дата: 29.04.10 10:04
Оценка:
Здравствуйте, tripol, Вы писали:

T>Имеется следующий код. Как вызвать виртуальный метод базового класса (A::Destroy) для объекта класса B?


T>
T>int _tmain(int argc, _TCHAR* argv[])
T>{
T>    B b;
T>    b.A::Destroy();
T>    return 0;
T>}
T>
Любите книгу — источник знаний (с) М.Горький
Re: Как вызвать виртуальный метод базового класса
От: Centaur Россия  
Дата: 30.04.10 06:01
Оценка: 7 (2) +3 :)))
Здравствуйте, tripol, Вы писали:

T>Имеется следующий код. Как вызвать виртуальный метод базового класса (A::Destroy) для объекта класса B?


Это неправильный вопрос. Надо говорить не «как», а «зачем».
Re[2]: Как вызвать виртуальный метод базового класса
От: tripol  
Дата: 30.04.10 11:14
Оценка:
Здравствуйте, Centaur, Вы писали:

C>Это неправильный вопрос. Надо говорить не «как», а «зачем».


Просто для того что бы знать как, ИМХО.
Re[3]: Как вызвать виртуальный метод базового класса
От: Centaur Россия  
Дата: 01.05.10 08:26
Оценка:
Здравствуйте, tripol, Вы писали:

C>>Это неправильный вопрос. Надо говорить не «как», а «зачем».


T>Просто для того что бы знать как, ИМХО.


Единственный обоснованный вариант, зачем вызывать функцию предка на объект потомка — это из перекрывающей функции потомка. А там это делается простым и всем известным синтаксисом Base::method().

Случаи, когда приходится вызывать родительский метод в обход перекрытого, свидетельствуют об ошибке дизайна — нарушении Liskov Substitution Principle.
Re[4]: Как вызвать виртуальный метод базового класса
От: vic.tep  
Дата: 02.05.10 10:44
Оценка:
Здравствуйте, Centaur, Вы писали:

А как же, паттерны: Template method и Factory method, тоже "ошибка дизайна"?
Re[5]: Как вызвать виртуальный метод базового класса
От: Guard_h4s Россия  
Дата: 02.05.10 10:50
Оценка:
Здравствуйте, vic.tep, Вы писали:

Интересно...
Ни разу при реализации оных не требовалось вызывать перекрытый метод базового класса.
Re[6]: Как вызвать виртуальный метод базового класса
От: vic.tep  
Дата: 02.05.10 11:30
Оценка:
Здравствуйте, Guard_h4s, Вы писали:

G_>Здравствуйте, vic.tep, Вы писали:


G_>Интересно...

G_>Ни разу при реализации оных не требовалось вызывать перекрытый метод базового класса.

Гыы, да действительно Не так понял ТС.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.