Рубрики

Наследование и дружба

В C ++ дружба не наследуется. Если базовый класс имеет функцию друга, то функция не становится другом производного класса (классов).

Например, следующая программа печатает ошибку, потому что show (), являющийся другом базового класса A, пытается получить доступ к закрытым данным производного класса B.

#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()

{

  B b;

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

  

  // Не могу получить доступ к закрытому члену, объявленному в классе 'B'

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

}

  

int main()

{

  show();

  getchar();

  return 0;

}

Спасибо Venki за приведенный выше код и пояснения.

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

Наследование и дружба

0.00 (0%) 0 votes