Разрешение области видимости
Порождая один класс от другого, можно прийти к такой ситуации, когда в нескольких классах используются переменные и функции с одинаковыми именами.
Например:
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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!