Mamy np. dwie klasy oraz definicje metod i akcesorów, które one zawierają.
class punkt
{
private:
float x, y;
public:
punkt (float, float);
void przesun (float, float);
float odcieta();
float rzedna();
};
punkt::punkt (float a, float b)
{
x = a;
y = b;
}
void punkt::przesun(float dx, float dy)
{
x = x + dx;
y = y + dy;
}
float punkt::odcieta()
{
cout << "Wspolrzedna x: " << x << endl;
return x;
}
float punkt::rzedna()
{
cout << "Wspolrzedna y: " << y << endl << endl;
return y;
}
class punkta : public punkt
{
public:
punkta(float, float);
float promien();
};
float punkta::promien()
{
float r=0, a=0;
a=odcieta()*odcieta()+rzedna()*rzedna();
r=sqrt(a);
return r;
}
Klasą bazową dla "punkta" jest klasa "punkt". Klasa "punkta" zawiera metodę "promien", która zwraca wartość typu float (odległość punktu od środka układu współrzędnych kartezjańskich).
Tworzymy obiekt typu "punkt" i inicjalizujemy go. Klasa ta nie zawiera jednak metody "promien", zawiera ją natomiast klasa pochodna - "punkta". Teraz pytanie - w jaki sposób obiekt klasy bazowej może użyć metody klasy pochodnej ?
Coś takiego nie zadziała.
int main()
{
float x=0, y=0, r=0;
cout << "Podaj wspolrzedne punktu:" << endl;
cout << "x: "; cin >> x;
cout << "y: "; cin >> y;
punkt a (x, y);
a.odcieta();
a.rzedna();
r=a.promien();
cout << "Promien: " << r << endl << endl;;
getch();
return 0;
}
Kod się lekko "rozjechał" po wrzuceniu na forum.