Pokaż cały kod.
Programowanie obiektowe
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Szczecin
0
- Rejestracja: dni
- Ostatnio: dni
- 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;
}
- Rejestracja: dni
- Ostatnio: dni
- 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
constpowinno być umieszczone za nazwą funkcji. Oznacza ono że funkcja nie może modyfikować swoich zmiennych. - W klasie bazowej
Funkcjametodavalue()nie jest zdefiniowana jako czysto wirtualna. W ogóle nie jest zdefiniowana. - W klasach pochodnych nie musisz powtarzać słowa
virtualale zamiast tego dodać słowooverride. - Nie musisz używać wskaźnika
thisdo operowania na zmiennych i metodach dostępnych wewnątrz klasy. Prostszy zapis.