Нужна помощь в наследовании - PullRequest
1 голос
/ 16 апреля 2011

Я прочитал этот вопрос , у меня все еще есть сомнения в моих концепциях наследования. Я пытался выполнить домашнее задание, но я думаю, что я все еще не получаю уровни доступа.У меня на уме следующие вопросы:

Является ли защищенным и общедоступным идентификатором доступа одинаковым?(Я не вижу разницы)

Мое назначение прилагается ниже, пожалуйста, помогите мне, если оно неверно.enter image description here enter image description here

Ответы [ 4 ]

3 голосов
/ 16 апреля 2011

Разница в том, что защищенные члены видны / доступны только дочерним классам.

class A {
public:
  int a; // anything can access this member.
private:
  int b; // only A can access this member.
protected:
  int c; // A and every other class that inherits this member can access it.
};
1 голос
/ 16 апреля 2011

Нет, они разныеЗащищенный означает, что он доступен для собственного класса, и все классы являются производными от класса

Пример:

class 1 {
    public void do1() { }
    private void do3() { }
    protected void do2 { }

    1()
    {
        public void do1() { } // ok
        private void do2() { } // ok
        protected void do3 { } // ok
    }
}

class 2 {
    2()
    {
        1.do1() { } // ok
        1.do2() { } // ERROR
        1.do3 { } // ERROR
    }
}

class 3 inherits class 1 {
    3()
    {
        do1() { } // ok
        do2() { } // ERROR
        do3 { } // ok = this class can access the the protected member of it's base class
    }
}
0 голосов
/ 16 апреля 2011

Защищенные члены Базового класса доступны только Базовому классу и классу, производному от Базового класса.

** Закрытые члены ** могут быть приняты только его собственным классом и не могут быть приняты производным классом.

** Открытые члены ** могут быть доступны любому классу, включая производный класс.

Пожалуйста, отметьте этот вопрос

0 голосов
/ 16 апреля 2011

Вы, кажется, забыли самый простой и самый важный аспект: доступность членов из несвязанного класса / в автономной (не-членской) функции. Открытые члены могут быть доступны извне класса и иерархии классов, частные и защищенные члены не могут.

Если вы имеете в виду общедоступный против защищенный наследование , что ж, ответ есть в ваших диаграммах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...