Языки программирования - концепции и принципы

Когда один класс порождается из


complex operator + (float left, complex right)

{

        complex result = complex(left);

        result + = right;                                               // Результат является отличимым получателем

        return result;

}

Спецификаторы доступа в языке C++

Когда один класс порождается из другого, мы вправе спросить, имеет ли производный класс доступ к компонентам базового класса. В следующем примере database (база данных) объявлена как приватная, поэтому она недо­ступна в производном классе:

class Airplanes {

private:

       Airplane_Data database [100];

};

class Jets : public Airplanes {



        void process Jet(int);

};

        void Jets::process_jet(int i)

 {

        Airplane_Data d = database[i] ;                                // Ошибка, нет доступа!

};

Если объявлен экземпляр класса Jets, он будет содержать память для database, но этот компонент недоступен для любой подпрограммы в произ­водном классе.

       Есть три спецификатора доступа в языке C++:

• Общий (public) компонент доступен для любого пользователя класса.

• Защищенный (protected) компонент доступен внутри данного класса и внутри производного класса.

• Приватный компонент доступен только внутри класса.

В примере, если database просто защищенный, а не приватный член класса, к нему можно обращаться из производного класса Jets:

class Airplanes {

protected:

        Airplane_Data database[100];

};

class Jets : public Airplanes {

       void process_jet(int);

};

       void Jets::process_jet(int i)

{

       Airplane_Data d = database[i];                        // Правильно, в производном классе

};

Однако это не очень хорошая идея, потому что она ставит под удар абстрак­цию. Вероятно, было бы лучше даже для производного класса манипулиро­вать унаследованными компонентами, используя общие или защищенные подпрограммы. Тогда, если внутреннее представление изменяется, нужно из­менить только несколько подпрограмм.


Содержание раздела