Вызов метода базового класса из производного
class Base{
public:
void foo(){
cout<<"foo of Base";
}
}
class Derived: public Base{
public:
void foo(){
cout<<"foo of Derived";
}
}
int main() {
Derived test;
test.Base::foo();
return 0;
}
Почему возможно обратиться к методу базового класса через точку? Как я понимаю, в каждом объекте имеется какой-то указатель на базовый класс?
Ответы (1 шт):
Автор решения: HolyBlackCat
→ Ссылка
Почему возможно обратиться к методу базового класса через точку?
Потому что язык так сделан.
Как я понимаю, в каждом объекте имеется какой-то указатель на базовый класс?
Нет, там просто лежит объект базового класса, (примерно) как поле:
class Derived
{
Base base;
// ...
};
Вообще, причем здесь наследование и Base::
? Вас же не смущает вот это:
struct A
{
void foo() {}
};
int main()
{
A a;
a.foo();
}
Тоже запись с точкой, а указателей нет.