Как я могу вычислить значение переменной члена дочернего класса в его конструкторе, а затем передать конструктору родителя ??
Мотивация заключается в том, что, если в конструкторе по умолчанию родительского класса много вычислений, мне не нужно выполнять эти вычисления, а заменять их только теми, которые вычисляются дочерним классом сразу после.
Например:
Car.h
class Car
{
public:
Car();
Car(double Price) ;
...
private:
double price;
double DetermineMarketPrice();
};
Car.cpp
Car::Car()
{
//some other long computation
price = DetermineMarketPrice();
}
Car::Car(double Price)
{
price = Price;
}
...
Porche.h
class Porche : public Car
{
public:
Porche();
...
private:
double price;
double discount;
double fee;
double DetermineMarketPrice();
double RetrieveFee();
double CheckDiscount();
...
};
Porche.cpp
Porche::Porche():Car(price)
{
discount = CheckDiscount();
fee = = RetrieveFee();
price = DetermineMarketPrice() * (1-discount) + fee;
}
В этом случае цена Порше еще не известна. Это должно быть рассчитано в конструкторе. Если бы я назвал конструктор родителя таким образом, кажется, что он пройдет только еще не инициализированную цену.
Что может быть хорошим способом передачи некоторого значения переменных-членов, которые могут быть известны только в конце инициализации класса Child ???