Parametr domyśłny konstruktora

Parametr domyśłny konstruktora
bartek164
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad rok
  • Postów:534
0

"Konstruktor musi mieć
przynajmniej jeden parametr domyślny ustawiający wartość jakiegoś pola klasy" dostałem takie polecenie, ale nie bardzo rozumiem co mam zrobić
co to znaczy parametrt domyślny konstruktora? Jak funkcja może mieć parametr domyślny bo nie rozumiem

szweszwe
  • Rejestracja:ponad 11 lat
  • Ostatnio:14 dni
  • Lokalizacja:Kraków
  • Postów:1694
0
edytowany 1x, ostatnio: szweszwe
bartek164
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad rok
  • Postów:534
0
Kopiuj
#include <iostream>
using namespace std;

class samochod {
public:
    int stan, paliwo, spalanie, pojemnosc_baku, przebieg;
    int uruchom_silnik();
    void zatrzymaj_silnik();
    int jedz(unsigned);
    void tankuj(int);
    void prezentuj();
    samochod(int domyslny = 0)  //##########
        : stan(domyslny)
        , paliwo(100)
        , spalanie(10)
        , pojemnosc_baku(200)
        , przebieg(1500)
    {
        cout << "Start(domyslny)\n";
        prezentuj();
    };
    samochod(int stan_, int paliwo_, int spalanie_, int pojemnosc_baku_,
        int przebieg_)
        : stan(stan_)
        , paliwo(paliwo_)
        , spalanie(spalanie_)
        , przebieg(przebieg_)
        , pojemnosc_baku(pojemnosc_baku_)
    {
        cout << "Start:\n";
        prezentuj();
    }
    samochod(const samochod& kopia_sam)
        : stan(0)
        , paliwo(pojemnosc_baku)
    {
        cout << "Kopia car\n";
    }
    ~samochod() { cout << "koniec"; }
};



int main(int argc, char** argv)
{

    string wybor;

    samochod car1(1); //tutaj
    samochod car(0, 200, 20, 1000, 2300);
    samochod car_copy(car);

}

czy to co zrobiłem z domyślnym parametrem jest poprawną operacją? <działa prawidłowo>

bartek164
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad rok
  • Postów:534
0

bo po prostu jest to dziwna operacja,a książka wsponminała coś podobnego, aczkolwiek różnego od tego.
program działa prawidłowo

YooSy
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 5 lat
  • Postów:472
0

Dzięki domyślnym parametrom konstruktora można mieć dwa w jednym (domyślny i parametryczny).

Kopiuj
#include <iostream>
#include <string>
#include <sstream>

class foo
{
public:
    foo(int x = 1, int y = 2) : x_{ x }, y_{ y } {}

    std::string to_string()
    {
        std::ostringstream oss;
        oss << x_ << " : " << y_;
        return oss.str();
    }
private:
    int x_;
    int y_;
};

int main()
{
    foo default_object;
    foo parameter_object{ 10, 20 };
    std::cout << default_object.to_string() << '\n' << parameter_object.to_string() << std::endl;
}

https://wandbox.org/permlink/zE2gMmwkY6IRnJ4t


Nie pisz na priv. Zadaj dobre pytanie na forum.

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.