Можно ли обратиться к полю дочернего класса через указатель на базовый?

Да, в языке программирования 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++ можно обращаться к полю дочернего класса через указатель на базовый класс, но только если это поле наследуется от базового класса.