Witam!
Uczę się programowania obiektowego, teraz przerabiam classy i ich dziedziczenie.
Mam takie pytanie i problem.
Oto mój kod:
plik punkt.h
#ifndef PUNKT_H
#define PUNKT_H
class Punkt
{
public:
Punkt();
Punkt(float x, float y, float z);
void przesun(float vx,float vy, float vz);
virtual ~Punkt();
protected:
float x;
float y;
float z;
private:
};
class Kula : Punkt
{
public:
Kula();
Kula(float r);
virtual ~Kula();
protected:
float r;
private:
};
#endif // PUNKT_H
plik punkt.cpp
#include "Punkt.h"
#include <iostream>
using namespace std;
Punkt::Punkt()
{
x=y=z=0;
}
Punkt::Punkt(float x, float y, float z)
{
this->x=x;
this->y=y;
this->z=z;
}
void Punkt::przesun(float vx, float vy, float vz)
{
cout << "Punkt po przesunieciu ma wspolrzedne: (" << x+vx << "," << y+vy << "," << z+vz << ")." << endl;
}
Kula::Kula()
{
x=y=z=r=0;
}
Kula::Kula(float r)
{
this->r=r;
}
Punkt::~Punkt()
{
//dtor
}
plik main.cpp
#include <iostream>
#include "Punkt.h"
using namespace std;
int main()
{
cout << "" << endl;
return 0;
}
Moim zadaniem jest:
Mam zrobić dziedziczenie klasy Punkt, tworząc klasę kula, klasa kula będzie wykożystywać współrzędne środka kuli z klasy Punkt i obliczać PCC i V (te funkcje to nie problem), problem w zrozumieniu mam, jak wprowadzać dane, klasa kula ma posiadać dodatkowy argument r - który będzie promieniem. W main.cpp, gdy próbowałem napisać Kula obiekt1(1,1,1,1); - wyskoczył mi błąd, i nie rozumiem dlaczego. Nauczyciel również niewytłumaczył dlaczego classa wygląda tak:
class Punkt
{
public:
Punkt();
Punkt(float x, float y, float z);
virtual ~Punkt();
protected:
float x;
float y;
float z;
private:
};
Dlaczego jest Punkt(), później znów Punkt, lecz z argumentami, a następnie jest virtual i ~Punkt();
rozumiem że ~Punkt służy jako destruktor, ale virtual??
Nie mogłem znaleźć w internecie odpowiedzi na moje pytanie, więc postanowiłem zapytać was.
PS. Czy zamiast pisać w punkt.h
Punkt();
Punkt(argumenty);
Mogę napisać tylko Punkt(argumenty); i wtedy w punkt.cpp
Punkt::Punkt(float x, float y, float z)
{
x=y=z=0;
this->x=x;
this->y=y;
this->z=z;
}
? Dzieki z apomoc.