Pokaż cały kod.
- 1
- 2
- Rejestracja:prawie 5 lat
- Ostatnio:ponad 4 lata
- Postów:58
0
#include <iostream>
using namespace std;
class Funkcja
{
private:
float x;
public:
const virtual float value();
void set_x(int nx)
{
x = nx;
}
int get_x(){ return x; }
};
class Liniowa : public Funkcja
{
private:
float a,b;
public:
Liniowa(float a,float b)
{
a=a=1,b=b=2;
}
const virtual float value(){
return (this->a*this->get_x())+this->b;
}
};
class Kwadratowa : public Funkcja
{
float a,b,c;
public:
Kwadratowa(float a,float b,float c)
{
a=a=1,b=b=2,c=c=3;
}
const virtual float value()
{
return<<(a*(this->get_x()*this->get_x())+(b*this->get_x())+c);
}
};
class Sinusoida : public Funkcja
{
public:
const virtual float value()
{
return this->get_x();
}
};
int main()
{
Funkcja *wsk;
Liniowa l(1,2);
wsk = &l;
cout<<wsk->value();
return 0;
}
edytowany 2x, ostatnio: sssebastianb5

- Rejestracja:prawie 10 lat
- Ostatnio:około 2 godziny
- Postów:530
2
Kilka uwag:
- Kod jest pełen błędów typu
return<<
luba=a=1,b=b=2;
. Gdybyś użył kompilatora to zobaczył byś je wszystkie. - Używaj listy inicjalizacyjnej w konstruktorach do inicjalizowania zmiennych np.
Liniowa(float a,float b): a{a},b{b} {}
- Słowo kluczowe
const
powinno być umieszczone za nazwą funkcji. Oznacza ono że funkcja nie może modyfikować swoich zmiennych. - W klasie bazowej
Funkcja
metodavalue()
nie jest zdefiniowana jako czysto wirtualna. W ogóle nie jest zdefiniowana. - W klasach pochodnych nie musisz powtarzać słowa
virtual
ale zamiast tego dodać słowooverride
. - Nie musisz używać wskaźnika
this
do operowania na zmiennych i metodach dostępnych wewnątrz klasy. Prostszy zapis.
edytowany 2x, ostatnio: TomaszLiMoon
- 1
- 2
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.
PerlMonkPerlMonk