Metody wirtualne
Ostatnio zmodyfikowano 2017-11-03 13:19
rav89lodz Temat założony przez niniejszego użytkownika |
Metody wirtualne » 2017-11-03 12:31:17 Dzień dobry, napisałem program w trzech plikach main.cpp #include <iostream> #include"Polimorfizm.h"
using namespace std;
void obliczenia( Ksztalt * x ) { x->oblicz_pole(); }
int main() { Kolo k1; Kwadrat kw1( 2 ); Ksztalt * wsk; wsk = & k1; wsk->oblicz_pole(); wsk = & kw1; wsk->oblicz_pole(); obliczenia( wsk ); wsk = & k1; obliczenia( wsk ); return 0; }
Polimorfizm.cpp #include <iostream> #include"Polimorfizm.h"
using namespace std;
Kolo::Kolo( float x ) { r = x; }
void Kolo::oblicz_pole() { cout << "Pole kola: " << 3.14 * r * r << endl; }
Kwadrat::Kwadrat( float x ) { a = x; }
void Kwadrat::oblicz_pole() { cout << "Pole kwadratu: " << a * a << endl; }
Polimorfizm.h #include <iostream>
using namespace std;
class Ksztalt { public: virtual void oblicz_pole() = 0; };
class Kolo : public Ksztalt { float r; public: Kolo( float = 1 ); virtual void oblicz_pole(); };
class Kwadrat : public Ksztalt { float a; public: Kwadrat( float = 1 ); virtual void oblicz_pole(); };
Dlaczego w pliku Polimorfizm.cpp nie mogę się odnieść do funkcji oblicz_pole jako virtual void? Działa jedynie samo void a jako bład dostaje outside class declaration. Dlaczego samo void jest legalne a virtual void juz nie? |
|
Chowan |
» 2017-11-03 13:19:51 cytując wikipiedie "Słowo kluczowe virtual określa się tylko w deklaracji metody, nie określa się tego w definicji (chyba że deklaracja jest jednocześnie definicją, co ma miejsce gdy implementacja metody zostanie określona w ciele klasy)." |
|
« 1 » |