Приватна віртуальна функція може бути замінена похідними класами, але може викликатися лише з базового класу. Це насправді корисна конструкція, коли вам потрібен такий ефект.
Приватна віртуальна функція може бути замінена похідними класами, але може викликатися лише з базового класу. Це насправді корисна конструкція, коли вам потрібен такий ефект.
Перевизначення функцій у C++ може виникнути лише за наявності спадковості. Перевантажені функції повинні мати різні сигнатури функцій, тобто кількість параметрів або тип даних параметрів повинні бути різними.
Але навіть якщо функція в базовому класі не є віртуальною, ви все ще можете це змінити – за винятком того, що тепер зв’язування є статичним: якщо ви викликаєте функцію через вказівник, статично типізований як Base*, викликається реалізація базового класу, але якщо ви викликаєте її через Derived*, викликається реалізація похідного класу.
Віртуальні функції можуть бути перевизначені похідними класами, але за будь-яких обставин вони будуть викликані лише в базовому класі. тому Ви можете зробити віртуальну функцію приватною, оскільки C++ має контроль доступу, але не має контролю видимості.
Ви не можете перевизначити приватний або статичний метод у Java. Якщо ви створюєте подібний метод із тим самим типом повернення та такими ж аргументами методу в дочірньому класі, тоді він приховає метод суперкласу; це відомо як приховування методу. Так само ви не можете перевизначити приватний метод у підкласі, оскільки він там недоступний.
Функція в межах функції-члена того самого класу означає іншу публічну функцію-член того самого класу. Зараз я покажу вам практично, як отримати доступ до приватного учасника.