Как получить данные с родительского класса?
Я совсем новенький в c++, то что я написал это плохо или нет? Есть ли другие способы получить данные с родительского класса?
class A
{
public:
virtual double func1() { return mVar1; }
private:
double mVar1;
}
class B : public A
{
public:
double func1();
private:
double mVar2;
}
B::func1()
{
return A::func1() * mVar2;
}
Ответы (2 шт):
Смотря, чего вы хотите добиться. Этот код компилируется. Делает то, что вы описываете. Ещё можно сделать переменную A::mVar1 не private, а protected, тогда не нужна будет отдельная функция A::func1 Переменная будет доступна в классе-наседнике:
class A
{
public:
virtual double func1() { return mVar1; }
protected:
double mVar1;
};
class B : public A
{
public:
double func1();
private:
double mVar2;
};
double B::func1()
{
return mVar1 * mVar2;
}
Как получить данные с родительского класса?
В случае, если производный (дочерний) класс (class B) получает доступ непосредственно к данным родительского (базового) класса (class A) - это очень плохой пример для практики так как нарушается один из основных принципов ООП - инкапсуляция. Инкапсуляция подразумевает возможность для класса B иметь доступ к данным класса А только через методы (функции), описываемые в разделах public / protected класса А, но никак не напрямую. Иначе любой производный класс может в любой момент изменить данные базового класса, что приводит к ошибкам, которые трудно отследить и исправить.