Parametr domyśłny konstruktora

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

0
#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>

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

0

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

#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

1 użytkowników online, w tym zalogowanych: 0, gości: 1