Klasa wirtualna

0

Witam wszystkich :-)

Czy z funkcji wirtualnej obiektu potomnego mogę odnieść się do zmiennych składowych nie występujących w obiekcie po którym dziedziczę [???] Zawsze wydawało mi się że nie można, a jednak ten fragment kodu zadziałał bezproblemowo:

class clPar
{
public:
  virtual void SetVal(int Val)=0;
  virtual void Show() = 0;
};

class clChi : public clPar
{
private:
  int itsVal;
public:
  virtual void SetVal(int Val) {itsVal = Val;}
  virtual void Show() {cout << itsVal;}
};


int main()
{
clPar* VirChi = new clChi;
VirChi->SetVal(125);
VirChi->Show();

char a = getch();
}
0
int main()
{
clPar* VirChi = new clChi;
VirChi->SetVal(125);
VirChi->Show();

delete VirChi ;
 
char a = getch();
}

Przcież to by była makabra , nie można by zdefiniować funkcji w obiekcie potomnym
bez znajomości budowy klasy podstawowej . [green]
Wszystkie zmienne na których operuje funkcja trzeba by deklarować w klasie bazowej...
pomyśl czy to ma jakiś sens ... bo dla mnie nie .
I nie dotyczy to tylko funkcji wirtualnych .

0

[wstyd] no tak :-) Dzięki za poszerzenie wiedzy początkującego programisty i pozdrawiam serdecznie

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