*   >> Чтение Образование Статьи >> science >> programming

Доступ заказчики, в классах C ++

T пит2; общественности: INT Add () {num1; пит2 = 3; INT сумма = num1 + пит2; вернуться сумму; }}; INT Main () {Калькулятор OBJ; obj.num1 = 2; INT результат = obj.add (); COUT вернуть 0; } Вторая строка в главной функции не так, потому что в этой линии, основные пытается получить доступ к (использование в качестве идентификатора) частный член, Num1. Защищенный доступ Тендерный Если член класса является открытым, это может быть доступ к внешней функции, включая производном классе.

Если член класса является закрытым, он не может получить доступ к внешней функции; даже производный класс не может получить к нему доступ. Вопрос в том, должны производный класс действительно не сможет получить доступ к закрытому члену его базового класса (с производный класс и базовый класс связаны)? Ну, чтобы решить эту проблему у вас есть другой спецификатор доступа, называемый, защищены. Если член класса защищена, она может быть доступна с помощью производного класса, но она не может быть доступна внешней функции. Она также может быть доступна членов внутри класса.

Следующий код показывает, как производный класс может получить доступ к защищенной член базового класса: #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; } Внешняя функция не может получить доступ к защищенному члену класса (базового класса); Тем не менее, полученные методом кла

Page   <<  [1] [2] [3] [4] >>
Copyright © 2008 - 2016 Чтение Образование Статьи,https://ru.nmjjxx.com All rights reserved.