Поднятие скрытого поля в C++
Поле потомка с тем же именем, что у базы, перекрывает базовый член при обычном обращении по короткому имени.
Директива using Base::value в
классе потомка вводит имя базового поля
в область видимости класса, и к нему
можно обратиться явно. Запишем два
поля value и выведем оба
числа из метода потомка:
┌pPathX="main.cpp"
#include <iostream>
class Box {
public:
int value = 10;
};
class Crate : public Box {
public:
using Box::value;
int value = 20;
void show() {
std::cout << value << "\n";
std::cout << Box::value << "\n";
}
};
int main() {
Crate item;
item.show();
return 0;
}
Сделайте Holder с полем
code и Bundle с
своим code. Поднимите базовое
поле через using и выведите
оба значения из метода Bundle.
Задайте tag в Root
и одноименное поле в Branch.
Напечатайте локальное tag
и базовое через квалификатор
Root:: без срезания объектов.