Если переменная-член базового класса является защищенной или общедоступной, вы можете просто обратиться к ней по имени в любой функции-члене производного класса. Если он является частным по отношению к базовому классу, компилятор вообще не разрешит производному классу доступ к нему. Пример:
class Base
{
protected:
int a;
private:
int b;
};
class Derived : public Base
{
void foo()
{
a = 5; // works
b = 10; // error!
}
};
Существует также кое-что, что нужно сказать, чтобы сохранить все переменные-члены частными, и при необходимости предоставлять геттеры и сеттеры.
Также остерегайтесь «скрытия» членов данных:
class Base
{
public:
int a;
};
class Derived : public Base
{
public:
int a;
};
Это создаст две переменные с именем a
: одну в Base
, одну в Derived
, и это, вероятно, приведет к путанице и ошибкам.