Если член класса является закрытым, он не может получить доступ к внешней функции; даже производный класс не может получить к нему доступ. Вопрос в том, должны производный класс действительно не сможет получить доступ к закрытому члену его базового класса (с производный класс и базовый класс связаны)? Ну, чтобы решить эту проблему у вас есть другой спецификатор доступа, называемый, защищены. Если член класса защищена, она может быть доступна с помощью производного класса, но она не может быть доступна внешней функции. Она также может быть доступна членов внутри класса.
Следующий код показывает, как производный класс может получить доступ к защищенной член базового класса: #include с помощью патезрасе; класс Калькулятор {защищены: INT num1; INT пит2; }; класс ChildCalculator: общественная Калькулятор {общественности: INT Add () {num1 = 2; пит2 = 3; INT сумма = num1 + пит2; вернуться сумму; }}; INT Main () {ChildCalculator myChildObj; INT результат = myChildObj.add (); COUT вернуть 0; } Базовый класс имеет только два свойства и метод не; Эти свойства были защищены. Производный класс имеет один метод и не недвижимость.
Внутри производного класса, защищенные свойства базового класса используются в качестве идентификаторов. Вообще, когда производный класс использует член базового класса, это метод производного класса, который использует элемент, как в этом примере. Приведенный выше код ОК. Следующий код не будет компилироваться, потому что линия 2 в функции Main () пытается получить доступ к защищенному члену базового класса: #include с помощью патезрасе; класс Калькулятор {защищены: INT num1; INT пит2; }; класс ChildCalculator: общественная Калькулятор {общественности: INT Add () {num1; пит2 = 3; INT сумма = num1 + пит2; вернуться сумму; }}; INT Main () {Калькулятор OBJ; obj.
num1 = 2; ChildCalculator myChildObj; INT результат = myChildObj.add (); COUT вернуть 0; } Внешняя функция не может получить доступ к защищенному члену класса (базового класса); Тем не менее, полученные методом кла