metoda zwykła a wirtualna?

0

Jakie sa roznice pomiedzy tymi dwoma metodami, zwykla a wirtualna?

0
#include <iostream>

using namespace std;

class Example {
    public:
        void foo() { cout << "zwykla metoda\n"; }
        virtual void vFoo() { cout << "metoda wirtualna klasa Example\n"; }
};

class Example2 : public Example {
    public:
        void foo() { cout << "zwykla metoda2\n"; }
        void vFoo() { cout << "metoda wirtualna klasa Example2\n"; }
};

int main()
{
    Example *p = new Example;
    p->foo();
    p->vFoo();
    delete p;

    p = new Example2;
    p->foo();
    p->vFoo();
    delete p;

    cin.sync();
    cin.get();

    return 0;
}

Skompiluj i znajdź jeden szczegół.
Jak dalej nie widzisz różnicy to dodaj słówko virtual do foo w Example, albo usuń z vFoo() z Example... pobaw się tym, a na pewno zobaczysz różnicę.

0

O to chodzi http://4programmers.net/Delphi/Virtual ?
EDIT: sorry, nie odświeżyłem podstrony, a są już odp.

0

Czyli w tych wirtualnych chodzi o to ze zamiast tworzyc dodatkowe metody w klasach pochodnych,tylko nadpisuje te wirtualna z bazowej i w klasie pochodnej pisze jej kod w zaleznosci od tego co chce zeby ona mi tu teraz robila?Dobrze mowie?

0

@New Chyba tu bardziej chodzi o polimorfie

0

no a polimorfizm to miedzy innymi metody wirtualne:
Polimorfizm to możliwość zdefiniowania w klasach pochodnych metod i o takich samych nazwach, co w klasie bazowej, lecz wykonujących różne czynności
tak wiec mam racje chyba :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1