Составители:
Рубрика:
51
При вызове деструктора производного класса вызываются деструкторы
всех базовых классов, причем вызов производится в порядке, обратном вызову
конструкторов.
Рассмотрим содержимое функции funcC:
void C::funcC()
{a2=0; //также возможные варианты обращения A::a2=0; B::a2=0; B::A::a2=0; C::a2=0
b2=0; //можно также B::b2=0; C::b2=0; Однако, нельзя A::b2=0
c2=0;// можно также C::c2=0; Однако, нельзя A::c2=0; B::c2=0
funcA(); //можно A::funcA(); B::funcA(); C::funcA()
}
Последний пример иллюстрирует способы обращения к унаследо-
ванным компонентам класса. К ним можно обращаться как к собствен-
ным компонентам класса, а можно использовать так называемое квали-
фицированное имя компонента, которое в общем виде записывается
следующим образом:
имя_класса :: имя_компонента
Использование квалифицированного имени удобно тогда, когда в
базовом и
производном классах определены одноименные компоненты.
Например, если бы в классе А было определено компонентное данное
c2, то в функции funcC() выражение с2=5 изменяло бы значение компо-
нента, определенного непосредственно в классе С, а для того, чтобы из-
менить значение унаследованного от А компонента, необходимо было
бы использовать выражение A::c2=5
или B::c2=5.
Таким образом, можно сделать вывод о том, что, во-первых, имена
компонент, определенных в производном классе могут совпадать с име-
нами унаследованных от базовых классов компонент, а во-вторых, такие
одноименные компоненты существуют независимо друг от друга, могут
быть одновременно доступны в классе с использованием квалифициро-
ванных
имен компонент.
При вызове деструктора производного класса вызываются деструкторы всех базовых классов, причем вызов производится в порядке, обратном вызову конструкторов. Рассмотрим содержимое функции funcC: void C::funcC() {a2=0; //также возможные варианты обращения A::a2=0; B::a2=0; B::A::a2=0; C::a2=0 b2=0; //можно также B::b2=0; C::b2=0; Однако, нельзя A::b2=0 c2=0;// можно также C::c2=0; Однако, нельзя A::c2=0; B::c2=0 funcA(); //можно A::funcA(); B::funcA(); C::funcA() } Последний пример иллюстрирует способы обращения к унаследо- ванным компонентам класса. К ним можно обращаться как к собствен- ным компонентам класса, а можно использовать так называемое квали- фицированное имя компонента, которое в общем виде записывается следующим образом: имя_класса :: имя_компонента Использование квалифицированного имени удобно тогда, когда в базовом и производном классах определены одноименные компоненты. Например, если бы в классе А было определено компонентное данное c2, то в функции funcC() выражение с2=5 изменяло бы значение компо- нента, определенного непосредственно в классе С, а для того, чтобы из- менить значение унаследованного от А компонента, необходимо было бы использовать выражение A::c2=5 или B::c2=5. Таким образом, можно сделать вывод о том, что, во-первых, имена компонент, определенных в производном классе могут совпадать с име- нами унаследованных от базовых классов компонент, а во-вторых, такие одноименные компоненты существуют независимо друг от друга, могут быть одновременно доступны в классе с использованием квалифициро- ванных имен компонент. 51
Страницы
- « первая
- ‹ предыдущая
- …
- 49
- 50
- 51
- 52
- 53
- …
- следующая ›
- последняя »