I can't get the diffrence between delegating base ctor in derived class and inheriting base ctor in derived class.
For example I have these 2 classed:
class Transport {
private:
std::string name;
public:
Transport() : Transport("") {
std::cout << "Paramless Transport ctor" << std::endl;
}
explicit Transport(std::string name) : name{name} {
std::cout << "Transport ctor" << std::endl;
}
Transport(const Transport &source)
: Transport{source.name} {
std::cout << "Transport CCtor" << std::endl;
}
~Transport() {
std::cout << "Transport destructor for " << get_name() << std::endl;
}
std::string get_name() {
return this->name;
}
void set_name(std::string name) {
this->name = name;
}
};
class Ship : public Transport {
private:
float max_speed;
public:
Ship() : max_speed{0}, Transport{""} {
std::cout << "Paramless Ship ctor" << std::endl;
}
explicit Ship(std::string name) : Transport{name}, max_speed{0} {
std::cout << "Ship 1 param ctor" << std::endl;
}
Ship(std::string name, float max_speed) : Transport{name}, max_speed{max_speed} {
std::cout << "Ship 2 param ctor" << std::endl;
}
Ship(const Ship &source) : Transport{source}, max_speed{source.max_speed} {
std::cout << "Ship CCtor" << std::endl;
}
~Ship() {
std::cout << "Ship destructor for " << get_name() << std::endl;
}
float get_max_speed() {
return this->max_speed;
}
void set_max_speed(float speed) {
this->max_speed = speed;
}
};
As far as I'm concerned here in Ship class I delegate base class ctors. If I will add using Transport::Transport in Ship class.This class will Inherit base class ctors and statements like Transport{name}, Transport{" "},Transport{"source"} etc won't be nessesary in Ship class? Can someone explain this to me?
Edit: Also does it make difference to write Ship() : max_speed{0}, Transport{""} or Ship() : Transport{""}, max_speed{0}
Aucun commentaire:
Enregistrer un commentaire