Да, в языке программирования C++ можно обратиться к полю дочернего класса через указатель на базовый класс, при условии что это поле является частью наследуемой структуры. В C++ существует такое понятие как полиморфизм, которое позволяет работать с объектами дочернего класса через указатель на базовый класс.
Для доступа к полю дочернего класса через указатель на базовый класс необходимо использовать оператор разрешения области видимости ->
или оператор разыменования *
.
Пример:
c++
#include <iostream>
class Base {
public:
int baseField;
};
class Derived : public Base {
public:
int derivedField;
};
int main() {
Derived derivedObj;
derivedObj.baseField = 10;
derivedObj.derivedField = 20;
Base* basePtr = &derivedObj;
std::cout << "baseField: " << basePtr->baseField << std::endl; // Выводит значение поля baseField дочернего класса
//std::cout << "derivedField: " << basePtr->derivedField << std::endl; // Ошибка: поле derivedField не является частью базового класса
return 0;
}
В данном примере создается базовый класс Base
с полем baseField
и дочерний класс Derived
, который наследует это поле и добавляет собственное поле derivedField
. В функции main
создается объект класса Derived
, и его адрес присваивается указателю на базовый класс Base* basePtr = &derivedObj;
. После этого можно обращаться к полю baseField
через указатель basePtr
, используя оператор ->
. Однако, нельзя обратиться к полю derivedField
, так как оно не является частью базового класса.
Таким образом, в C++ можно обращаться к полю дочернего класса через указатель на базовый класс, но только если это поле наследуется от базового класса.