Разрешение области видимости



Порождая один класс от другого, можно прийти к такой ситуации, когда в нескольких классах используются переменные и функции с одинаковыми именами.

Например:

class A

{public:

int fun() {return 1;}

};

class B: public A

{public:

int fun() {return 2;}

};

void main()

{ A a;

B b;

int i = a.fun(); //i=1

int j=b.fun(); //j=2

}

В этом случае компилятор действует по следующему алгоритму: если имя в базовом классе переобъявляется в производном, то имя в производном классе подавляет соответствующее имя в базовом.

В С++ можно заставить компилятор «видеть» за пределами текущей области видимости. Для этого используются оператор разрешения видимости. Общая форма этого оператора такова:

<имя класса>::<идентификатор из класса>,

где <имя класса> - это имя базового или производного класса, а <идентификатор из класса> - это имя любой переменной или функции, объявленной в классе.

Модифицируем наш класс B следующим образом:

class B: public A

{public:

int fun() {return 2;}

int fun1() {return A::fun();}

};

Теперь вызов функции B.fin1() приведет к вызову функции fun() класса A.

 


Задачи

 

Базовый уровень

Создать класс Money для работы с денежными суммами. Число представлено 2 полями: рублями и копейками. Реализовать сложение, вычитание, деление сумм, сравнение


Дата добавления: 2015-12-18; просмотров: 16; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!