Рубрики

C ++ | ключевое слово друга | Вопрос 1

Прогнозировать вывод следующей программы.

#include <iostream>

using namespace std;

class A

{

protected:

    int x;

public:

    A() {x = 0;}

    friend void show();

};

  

class B: public A

{

public:

    B() : y (0) {}

private:

    int y;

};

  

void show()

{

    A a;

    B b;

    cout << "The default value of A::x = " << a.x << " ";

    cout << "The default value of B::y = " << b.y;

}

(A) Ошибка компилятора в show (), потому что x защищен в классе A
(B) Ошибка компилятора в show (), потому что у является частным в классе б
(C) Значение по умолчанию A :: x = 0 Значение по умолчанию B :: y = 0
(D) Зависит от компилятора

Ответ: (Б)
Объяснение: Обратите внимание, что show () является другом класса A, поэтому не должно быть никаких ошибок компилятора при доступе к любому члену A в show ().

Класс B наследуется от A, важно отметить, что дружба не наследуется. Так что show () не становится другом B и поэтому не может получить доступ к закрытым членам B.
Тест на этот вопрос

Рекомендуемые посты:

C ++ | ключевое слово друга | Вопрос 1

0.00 (0%) 0 votes